Specify comparison options for Simulink.sdi.MatchesSignal constraint

## Description

Use a Simulink.sdi.constraints.MatchesSignalOptions object to configure the comparison behavior and acceptance criteria for an instance of the Simulink.sdi.constraints.MatchesSignal constraint.

### Note

The MatchesSignal constraint uses the Simulation Data Inspector to perform comparisons and requires a license for one of these products:

• Signal Processing Toolbox™

• MATLAB® Coder™

• Fixed-Point Designer™

## Creation

### Description

example

MatchesSignalOptions creates an instance of the Simulink.sdi.constraints.MatchesSignalOptions class with properties that correspond to a constraint that does not ignore any checks and uses the default alignment settings for the Simulation Data Inspector.

example

MatchesSignalOptions(Name,Value) creates an instance of the Simulink.sdi.constraints.MatchesSignalOptions class with comparison behavior using properties specified by one or more Name,Value pair arguments.

## Properties

expand all

Constraint sensitivity to the actual value having a different data type from the expected value.

• false — The constraint checks whether the expected value and actual value data types match.

• true — The constraint is insensitive to data type mismatches between the expected value and actual value.

You can specify the IgnoreDataTypes property in the constructor using the 'IgnoringDataTypes' name-value pair argument.

#### Attributes:

 GetAccess public SetAccess public

Constraint sensitivity to one or more signals not aligning between the expected value and actual value.

• false — The constraint checks for signals that do not align between the expected value and actual value.

• true — The constraint is insensitive to one or more signals not aligning between the expected value and actual value.

You can specify the IgnoreSignalsNotAligned property in the constructor using the 'IgnoringSignalsNotAligned' name-value pair argument.

#### Attributes:

 GetAccess public SetAccess public

Constraint sensitivity to the actual value containing data outside of the time interval defined by the expected value.

• false — The constraint checks whether the actual value contains data outside the time interval defined by the expected value.

• true — The constraint is insensitive to the actual value containing data outside the time interval defined by the expected value.

You can specify the IgnoreExtraData property in the constructor using the 'IgnoringExtraData' name-value pair argument.

#### Attributes:

 GetAccess public SetAccess public

Alignment criteria for the comparison. When the expected value contains more than one signal, the Simulation Data Inspector comparison algorithm aligns signals for comparison between the expected and actual values. By default, the Simulation Data Inspector aligns by data source, then by block path, then by SID, and then by signal name. For details about the Simulation Data Inspector alignment algorithm, see How the Simulation Data Inspector Compares Data.

Specify alignment criteria as a string array with one or more of these options listed in the order in which you want them considered:

• BlockPath — The path to the source block for the signal.

• SID — Simulink identifier. For more information, see Locate Diagram Components Using Simulink Identifiers.

• SignalName — The name of the signal.

• DataSource — Path of the variable.

You can specify the Alignment property in the constructor using the 'AligningBy' name-value pair argument.

## Examples

collapse all

This example shows how to configure the comparison behavior of a Simulink.sdi.constraints.MatchesSignal constraint using a Simulink.sdi.constraints.MatchesSignalOptions object. You can use a MatchesSignalOptions object to configure multiple comparison properties with a single name-value pair input in the construction of the MatchesSignal instance.

Create Time Series Data

This example creates workspace data to use for illustrative purposes only. You can use the MatchesSignal constraint to compare data from other sources, such as simulation outputs or a file containing test data, and the constraint can compare time series data in any format supported by the Simulation Data Inspector.

In this example, the first signal is a timeseries object with the name Wave Data that contains data for a sine wave.

time = 0:0.1:20; sig1vals = sin(2*pi/5*time); sig1_ts = timeseries(sig1vals,time); sig1_ts.Name = 'Wave Data';

The second signal is also a sine wave at the same frequency, with a slight attenuation and sampled at a different rate. Because the comparison algorithm for the MatchesSignal constraint includes a synchronization step, comparing these two signals with different time vectors does not necessarily result in a test failure. The second signal is cast to single data type and also named Wave Data so the alignment algorithm can pair the signals for comparison.

time2 = 0:0.1:22; sig2vals = single(0.98*sin(2*pi/5*time2)); sig2_ts = timeseries(sig2vals,time2); sig2_ts.Name = 'Wave Data';

Configure a MatchesSignal Instance and Compare the Data

You can use a MatchesSignalOptions object to specify how an instance of the MatchesSignal constraint handles conditions such as mismatched data types and how signals are aligned between the actual and expected data sets. You can specify the properties of the MatchesSignalOptions object to suit the test you want to write. For example, if you want your test to compare data of varying types and a data type match is not functionally relevant, you could set the IgnoreDataTypes property to true.

Create a MatchesSignalOptions object to create a MatchesSignal instance that ignores data type mismatches and data samples outside the time interval the actual and expected signals share.

import Simulink.sdi.constraints.MatchesSignalOptions opts = MatchesSignalOptions('IgnoringDataTypes',true,'IgnoringExtraData',true);

Create a TestCase instance for interactive use and compare sig1_ts and sig2_ts using the MatchesSignal constraint, the MatchesSignalOptions object, and an absolute tolerance of 0.02.

import matlab.unittest.TestCase testCase = TestCase.forInteractiveUse; import Simulink.sdi.constraints.MatchesSignal testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02,'WithOptions',opts))
Verification passed. 

The test passes. When you run the same test again without the options defined by the MatchesSignalOptions object, the test fails due to the mismatched data types.

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02))
Verification failed. --------------------- Framework Diagnostic: --------------------- MatchesSignal(<Value>,'AbsTol',0.02) failed. --> Data types do not match for the following aligned signals: ActualValue ActualDataType ExpectedValue ExpectedDataType _________________ ______________ ___________________ ________________ {'<Actual>.Data'} {'single'} {'<Expected>.Data'} {'double'} ------------------ Stack Information: ------------------ In \\fs03ahzp05cfs0\vmgr\$\home05\snadeau\Documents\MATLAB\Examples\simulink-ex71177165\ConfigureMatchesSignalConstraintBehaviorExample.mlx (ConfigureMatchesSignalConstraintBehaviorExample) at 16 In E:\jobarchive\Bdoc20a\2019_09_13_h15m07s26_job1204077_pass\matlab\toolbox\matlab\codetools\embeddedoutputs\+matlab\+internal\+editor\evaluateRegions.p (evaluateRegions) at 0 In E:\jobarchive\Bdoc20a\2019_09_13_h15m07s26_job1204077_pass\matlab\toolbox\matlab\codetools\embeddedoutputs\+matlab\+internal\+editor\EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 0 In E:\jobarchive\Bdoc20a\2019_09_13_h15m07s26_job1204077_pass\matlab\toolbox\matlab\codetools\+matlab\+internal\+liveeditor\@LiveEditorUtilities\execute.m (execute) at 52 In E:\jobarchive\Bdoc20a\2019_09_13_h15m07s26_job1204077_pass\matlab\toolbox\matlab\codetools\+matlab\+internal\+liveeditor\@LiveEditorUtilities\openAndExecute.m (openAndExecute) at 12 In E:\jobarchive\Bdoc20a\2019_09_13_h15m07s26_job1204077_pass\matlab\toolbox\matlab\codetools\+matlab\+internal\+liveeditor\executeAndSave.m (executeAndSave) at 20 In \\mathworks\www\badomains\examplemanager\prod\public\em_matlab_scripts\+examples\private\publishMainFile.m (publishMainFile) at 35 In \\mathworks\www\badomains\examplemanager\prod\public\em_matlab_scripts\+examples\previewExample.m (previewExample) at 70