slmetric.metric.MetaInformation class
Package: slmetric.metric
Description
The slmetric.metric.MetaInformation
class properties contain metric
metadata. On the Metrics Dashboard, when you click the widget for an individual metric, this
metadata is in the table. For custom metrics, when you create a custom metric class, you
specify the slmetric.metric.MetaInformation
the applicable
properties.
Construction
Create an slmetric.Engine
object. Use the
getMetricMetaInformation
property to return an
slmetric.metric.MetaInformation
object.
Properties
Name
— Metric name
character value | string scalar
For custom metrics, when you define the custom metric class, specify this property. For shipped metrics, this property is already set.
Example: 'Model Advisor standards check compliance for High Integrity'
Data Types: char
Description
— Metric description
character value | string scalar
For custom metrics, when you define the custom metric class, specify this property. For shipped metrics, this property is already set.
Example: 'Metric that counts the percentage of checks that passed for the High Integrity Model Advisor standards check grouping.'
Data Types: char
MeasuresNames
— Names of metric measures
cell array of character vectors | cell array of string scalars
For custom metrics, when you define the custom metric class, if applicable, specify this property. For shipped metrics, this property is already set.
Example: {'Passed Checks'} {'Total Checks'}
Data Types: char
AggregatedMeasuresNames
— Names of aggregated metric measures
cell array of character vectors | cell array of string scalars
For custom metrics, when you define the custom metric class, if applicable, specify this property. For shipped metrics, this property is already set.
Example: {'Passed Checks (incl. Descendants'} {'Total Checks'}
Data Types: char
ValueName
— Value name
character vector | string scalar
For custom metrics, when you define the custom metric class, specify this property. For shipped metrics, this property is already set.
Example: 'Passed Checks'
Data Types: char
AggregatedValueName
— Name of aggregated metric value
cell array of character vectors | cell array of string scalars
For custom metrics, when you define the custom metric class, specify this property. For shipped metrics, this property is already set.
Example: {'Passed Checks (incl. Descendants'} {'Total Checks'}
Data Types: char
Examples
Add a Custom Widget to a Group
Create a custom metric that counts nonvirtual blocks. Specify a widget to display this metric on the Metrics Dashboard. Add it to the Size Group.
Create a custom metric class.
className = 'nonvirtualblockcount';
slmetric.metric.createNewMetricClass(className);
Create the nonvirtual block count metric by adding this code to the
nonvirtualblockcount.m
file. The this =
nonvirtualblockcount
function sets the
slmetric.metric.MetaInformation
properties.
classdef nonvirtualblockcount < slmetric.metric.Metric %nonvirtualblockcount calculates number of nonvirtual blocks per level. % BusCreator, BusSelector and BusAssign are treated as nonvirtual. properties VirtualBlockTypes = {'Demux','From','Goto','Ground', ... 'GotoTagVisiblity','Mux','SignalSpecification', ... 'Terminator','Inport'}; end methods function this = nonvirtualblockcount() this.ID = 'nonvirtualblockcount'; this.Name = 'Nonvirtual Block Count'; this.Version = 1; this.CompileContext = 'None'; this.Description = 'Algorithm that counts nonvirtual blocks per level.'; this.AggregatedValueName = 'Nonvirtual Blocks (incl. Descendants)' this.ValueName = 'Nonvirtual Blocks' this.ComponentScope = [Advisor.component.Types.Model, ... Advisor.component.Types.SubSystem]; this.AggregationMode = slmetric.AggregationMode.Sum; this.ResultChecksumCoverage = true; this.SupportsResultDetails = true; end function res = algorithm(this, component) % create a result object for this component res = slmetric.metric.Result(); % set the component and metric ID res.ComponentID = component.ID; res.MetricID = this.ID; % Practice D1=slmetric.metric.ResultDetail('identifier 1','Name 1'); D1.Value=0; D1.setGroup('Group1','Group1Name'); D2=slmetric.metric.ResultDetail('identifier 2','Name 2'); D2.Value=1; D2.setGroup('Group1','Group1Name'); % use find_system to get blocks inside this component blocks = find_system(getPath(component), ... 'SearchDepth', 1, ... 'Type', 'Block'); isNonVirtual = true(size(blocks)); for n=1:length(blocks) blockType = get_param(blocks{n}, 'BlockType'); if any(strcmp(this.VirtualBlockTypes, blockType)) isNonVirtual(n) = false; else switch blockType case 'SubSystem' % Virtual unless the block is conditionally executed % or the Treat as atomic unit check box is selected. if strcmp(get_param(blocks{n}, 'IsSubSystemVirtual'), ... 'on') isNonVirtual(n) = false; end case 'Outport' % Outport: Virtual when the block resides within % SubSystem block (conditional or not), and % does not reside in the root (top-level) Simulink window. if component.Type ~= Advisor.component.Types.Model isNonVirtual(n) = false; end case 'Selector' % Virtual only when Number of input dimensions % specifies 1 and Index Option specifies Select % all, Index vector (dialog), or Starting index (dialog). nod = get_param(blocks{n}, 'NumberOfDimensions'); ios = get_param(blocks{n}, 'IndexOptionArray'); ios_settings = {'Assign all', 'Index vector (dialog)', ... 'Starting index (dialog)'}; if nod == 1 && any(strcmp(ios_settings, ios)) isNonVirtual(n) = false; end case 'Trigger' % Virtual when the output port is not present. if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'off') isNonVirtual(n) = false; end case 'Enable' % Virtual unless connected directly to an Outport block. isNonVirtual(n) = false; if strcmp(get_param(blocks{n}, 'ShowOutputPort'), 'on') pc = get_param(blocks{n}, 'PortConnectivity'); if ~isempty(pc.DstBlock) && ... strcmp(get_param(pc.DstBlock, 'BlockType'), ... 'Outport') isNonVirtual(n) = true; end end end end end blocks = blocks(isNonVirtual); res.Value = length(blocks); end end end
Register the new metric in the metric repository.
[id_metric,err_msg] = slmetric.metric.registerMetric(className);
To begin, open the default configuration for the Metrics Dashboard layout.
conf = slmetric.dashboard.Configuration.open();
Obtain the slmetric.dashboard.Layout
object from the
slmetric.dashboard.Configuration
object.
layout = getDashboardLayout(conf);
Obtain widget objects that are in the layout object.
layoutWidget = getWidgets(layout);
Remove the widget that represents the Simulink block count metric.
sizeGroup = layoutWidget(2); sizeGroupWidgets = sizeGroup.getWidgets(); sizeGroup.removeWidget(sizeGroupWidgets(1));
Add a widget that displays the nonvirtual block count metric. For custom widgets,
the default visualization type is single value. If you want to use a different
visualization technique, specify a different value for the
VisualizationType
property.
newWidget = sizeGroup.addWidget('Custom', 1); newWidget.Title = ('Nonvirtual Block Count'); newWidget.setMetricIDs('nonvirtualblockcount'); newWidget.setWidths(slmetric.dashboard.Width.Medium); newWidget.setHeight(70);
Specify whether there are lines separating the custom widget from other widgets in the group. These commands specify that there is a line to the right of the widget.
s.top = false; s.bottom = false; s.left = false; s.right = true; newWidget.setSeparators([s, s, s, s]);
Save the configuration object. This command serializes the API information to an XML file.
save(conf,'Filename','DashboardConfig.xml');
Set the active configuration.
slmetric.dashboard.setActiveConfiguration(fullfile(pwd,'DashboardConfig.xml'));
For a model, open the Metrics Dashboard.
metricsdashboard vdp
Click the All Metrics button to run all metrics.
Version History
Introduced in R2018b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)