Simulink.sdi.constraints. Класс MatchesSignal

Пакет: Simulink.sdi.constraints
Суперклассы: matlab.unittest.constraints.Constraint

Ограничение, которое сравнивает данные временных рядов с допусками с помощью Инспектора Данных моделирования

Описание

Используйте ограничение Simulink.sdi.constraints.MatchesSignal, чтобы сравнить данные временных рядов с ожидаемым значением как часть теста. Можно сконфигурировать ограничение, чтобы использовать комбинацию абсолютных, относительных, и значения допуска времени для сравнения. Можно также задать дополнительные опции сконфигурировать поведение сравнения с помощью объекта Simulink.sdi.constraints.MatchesSignalOptions или с помощью одного или нескольких аргументов пары "имя-значение".

Ограничение использует Инспектора Данных моделирования, чтобы выполнить сравнения и требует лицензии на один из этих продуктов:

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB® Coder™

  • Fixed-Point Designer™

Для получения дополнительной информации о том, как допуски и опции выравнивания влияют на ограничительные сравнения, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Создание

Описание

пример

MatchesSignal(expVal) создает ограничение, которое определяет, совпадают ли данные временных рядов, представляющие фактическое значение, с данными, заданными ожидаемым значением, expVal.

пример

MatchesSignal(expVal,Name,Value) создает ограничение с дополнительными свойствами, заданными одним или несколькими аргументами пары Name,Value.

Входные параметры

развернуть все

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'IgnoringDataTypes',true

Сконфигурируйте ограничительную чувствительность к фактическому значению, имеющему различный тип данных от ожидаемого значения.

  • ложь Ограничение проверяет ли ожидаемое значение и соответствие типов данных фактического значения.

  • tRUE Ограничение нечувствительно к неверным типам данных между ожидаемым значением и фактическим значением.

Пример: 'IgnoringDataTypes',true

Сконфигурируйте ограничительную чувствительность к одному или нескольким сигналам, не выравнивающимся между ожидаемым значением и фактическим значением.

  • ложь Ограничение проверяет на сигналы, которые не выравниваются между ожидаемым значением и фактическим значением.

  • tRUE Ограничение нечувствительно к одному или нескольким сигналам, не выравнивающимся между ожидаемым значением и фактическим значением.

Пример: 'IgnoringSignalsNotAligned',true

Сконфигурируйте ограничительную чувствительность к фактическому значению, содержащему данные за пределами временного интервала, заданного ожидаемым значением.

  • ложь Ограничение проверяет, содержит ли фактическое значение данные вне временного интервала, заданного ожидаемым значением.

  • tRUE Ограничение нечувствительно к фактическому значению, содержащему данные вне временного интервала, заданного ожидаемым значением.

Пример: 'IgnoringExtraData',true

Критерии выравнивания сравнения. Когда ожидаемое значение содержит больше чем один сигнал, Инспектор Данных моделирования, алгоритм сравнения выравнивает сигналы для сравнения между ожидаемыми и фактическими значениями. По умолчанию Инспектор Данных моделирования выравнивается источником данных, затем блоком path, затем SID, и затем именем сигнала. Для получения дополнительной информации об Инспекторе Данных моделирования алгоритм выравнивания, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Задайте критерии выравнивания как массив строк с одним или несколькими из этих опций, перечисленных в порядке, в котором вы хотите их рассмотренный:

Пример: 'AligningBy',["SignalName","BlockPath"] задает выравнивание сигнала именем сигнала и затем блоком path.

Свойства

развернуть все

Ожидаемое значение, чтобы использовать в качестве базовой линии для сравнения. Данные для ожидаемого значения должны соединить значения данных со временем. Данные могут быть в любом формате, поддержанном Инспектором Данных моделирования. Инспектор Данных моделирования требует данных в формате, который сопоставляет демонстрационные значения со временем. Поддерживаемые форматы включают timeseries, Structure with time и Dataset.

Атрибуты:

GetAccess

общественность

SetAccess

неизменяемый

Объект Simulink.sdi.constraints.MatchesSignalOptions, который задает опции, чтобы сконфигурировать сравнение для ограничения. По умолчанию сравнение использует настройки выравнивания по умолчанию для Инспектора Данных моделирования и имеет строгие критерии допустимости, означая, что сравнение не игнорирует проверок. Можно использовать свойство MatchesSignalOptions сконфигурировать, как ограничение выравнивает сигналы в ожидаемых и фактических выполнениях и чувствительны ли тесты с помощью ограничения к:

  • Фактическое значение, имеющее различный тип данных от ожидаемого значения.

  • Один или несколько сигналов, не выравнивающихся между ожидаемыми и фактическими выполнениями.

  • Фактическое значение, содержащее данные вне временного интервала, задано ожидаемым значением.

Можно задать свойство MatchesSignalOptions для ограничения с помощью отдельных аргументов пары "имя-значение" или с помощью пары "имя-значение" 'WithOptions' с объектом Simulink.sdi.constraints.MatchesSignalOptions как значение. Когда вы задаете свойство MatchesSignalOptions с помощью объекта MatchesSignalOptions, можно сконфигурировать все ограничительные опции с помощью одной пары "имя-значение".

Атрибуты:

GetAccess

общественность

SetAccess

неизменяемый

Типы данных: Simulink.sdi.constraints.MatchesSignalOptions

Абсолютный допуск к сравнениям с помощью ограничения. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.1

Пример 2

Атрибуты:

GetAccess

общественность

SetAccess

неизменяемый

Типы данных: double

Относительный допуск к сравнениям с помощью ограничения. Например, задайте 0.1, чтобы использовать 10%-й допуск к сравнению. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.05

Атрибуты:

GetAccess

общественность

SetAccess

неизменяемый

Типы данных: double

Допуск времени к сравнениям с помощью ограничения, в s. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.001

Атрибуты:

GetAccess

общественность

SetAccess

неизменяемый

Типы данных: double

Примеры

свернуть все

Этот пример показывает, как использовать ограничение Simulink.sdi.constraints.MatchesSignal и объект Simulink.sdi.constraints.MatchesSignalObjects настроить, как тесты с помощью ограничения MatchesSignal сравнивают данные временных рядов. Когда вы используете ограничение MatchesSignal, можно задать абсолютный, относительный, и допуски времени, чтобы использовать в сравнении. Можно также сконфигурировать опции, которые определяют ограничительную чувствительность к характеристикам данных, таким как отличающиеся типы данных.

Ограничение MatchesSignal использует Инспектора Данных моделирования для сравнения временных рядов и требует одного из этих продуктов:

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB Coder™

  • Fixed-Point Designer™

Создайте данные временных рядов

Этот пример показывает, как создать данные для сравнения в рабочей области и использует формат timeseries. Можно также использовать ограничение MatchesSignal, чтобы сравнить сигналы, регистрируемые от симуляции или из другого источника. Ограничение может сравнить данные временных рядов в любом формате, поддержанном Инспектором Данных моделирования, таким как формат Simulink.SimulationData.Dataset.

В этом примере первый сигнал является синусоидой, и второй сигнал является также синусоидой с маленьким затуханием в данных.

time = linspace(0,20,1001);

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

sig2vals = 0.98*sin(2*pi/5*time);
sig2_ts = timeseries(sig2vals,time);
sig2_ts.Name = 'Wave Data';

Создайте интерактивный тест, чтобы сравнить сигналы

Создайте интерактивный тест и используйте ограничение MatchesSignal, чтобы выполнить сравнение двух сигналов. Используйте sig1_ts для ожидаемого значения в экземпляре ограничения MatchesSignal и проигнорируйте несоответствия типа данных.

import matlab.unittest.TestCase
import Simulink.sdi.constraints.MatchesSignal

testCase = TestCase.forInteractiveUse;
testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts));
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    MatchesSignal failed.
    --> The following aligned signals did not match:
        
              ActualValue        ExpectedValue  
            _______________    _________________
        
            '<Actual>.Data'    '<Expected>.Data'
    --> Comparison snapshots captured to:
        --> /tmp/BR2019ad_1062519_57051/mlx_to_docbook1/Snapshot_c9017eee-a849-4ea5-91e1-a4ace28cd831.png
    ------------------
    Stack Information:
    ------------------
    In /tmp/BR2019ad_1062519_57051/mlx_to_docbook1/tp9dc4a53d/simulink-ex22803619/TestTimeSeriesDataWithTimeToleranceExample.mlx (TestTimeSeriesDataWithTimeToleranceExample) at 14
    In /mathworks/devel/bat/BR2019ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 110
    In /mathworks/devel/bat/BR2019ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 58
    In /mathworks/devel/bat/BR2019ad/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 36
    In /mathworks/devel/bat/BR2019ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 195
    In /mathworks/devel/bat/BR2019ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 147
    In /mathworks/devel/bat/BR2019ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 68
    In /mathworks/devel/bat/BR2019ad/build/matlab/tools/build_using_matlab/BML.m (BML) at 13

Диагностическая информация показывает что проверка не выполнена. Щелкните по ссылке, чтобы просмотреть снимок состояния сравнения, чтобы просмотреть оба сигнала и сигнал различия. Из графика вы видите, что фаза переключает, который создает различие и заставляет сравнение перестать работать.

Можно задать абсолютный допуск к экземпляру ограничения MatchesSignal, чтобы использовать в сравнении.

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02));
Verification passed.

Задайте ограничительные опции

Можно также задать опции для ограничения, с помощью объекта MatchesSignalOptions. Например, сигналы в этом примере выравниваются именем сигнала. Создайте объект MatchesSignalOptions сконфигурировать настройки выравнивания, чтобы выровняться сначала именем сигнала.

import Simulink.sdi.constraints.MatchesSignalOptions

opts = MatchesSignalOptions('AligningBy',"SignalName");
testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts,'AbsTol',0.02,'WithOptions',opts));
Verification passed.

Введенный в R2019a