Simulink.sdi.constraints.MatchesSignal class

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

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

Описание

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

Примечание

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

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB® Coder™

  • Fixed-Point Designer™

Создание

Описание

пример

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

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Свойства

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

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

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

Атрибуты:

GetAccess
public
SetAccess
immutable

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

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

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

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

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

Атрибуты:

GetAccess
public
SetAccess
immutable

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

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

Пример: 0.1

Пример 2

Атрибуты:

GetAccess
public
SetAccess
immutable

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

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

Пример: 0.05

Атрибуты:

GetAccess
public
SetAccess
immutable

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

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

Пример: 0.001

Атрибуты:

GetAccess
public
SetAccess
immutable

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

Примеры

свернуть все

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

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

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

  • Simulink®

  • Signal Processing Toolbox™

  • MATLAB Coder™

  • Fixed-Point Designer™

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

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

В этом примере первым сигналом является timeseries объект, содержащий данные для синусоиды с именем Wave Data.

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

Второй сигнал является также синусоидой на той же частоте с небольшим затуханием и произведенный на различном уровне. Поскольку алгоритм сравнения для MatchesSignal ограничение включает шаг синхронизации, сравнение этих двух сигналов с различными временными векторами не всегда приводит к непройденному тесту. Второй сигнал также называют Wave Data таким образом, алгоритм выравнивания может соединить сигналы для сравнения.

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

Создайте тест и сравните сигналы

Этот пример использует интерактивный тест в иллюстративных целях. Можно использовать MatchesSignal ограничение с другими типами модульных тестов в среде тестирования MATLAB. Например, чтобы записать модульные тесты, основанные на классах, смотрите Запись Простой Тест Используя Классы (MATLAB).

Создайте TestCase экземпляр для интерактивного использования.

import matlab.unittest.TestCase

testCase = TestCase.forInteractiveUse;

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

import Simulink.sdi.constraints.MatchesSignal

testCase.verifyThat(sig2_ts,MatchesSignal(sig1_ts));
Verification failed.
    ---------------------
    Framework Diagnostic:
    ---------------------
    MatchesSignal(<Value>) failed.
    --> The following aligned signals did not match:
        
               ActualValue          ExpectedValue   
            _________________    ___________________
        
            {'<Actual>.Data'}    {'<Expected>.Data'}
    
    Comparison results have been saved to:
    --> /tmp/BR2020ad_1302590_239645/mlx_to_docbook1/comparisonResults_9fb19acf-e33d-4dc4-89b8-c0261d59bd05.mldatx
    ------------------
    Stack Information:
    ------------------
    In /tmp/BR2020ad_1302590_239645/mlx_to_docbook1/tpb69fb721/simulink-ex22803619/TestTimeSeriesDataWithTimeToleranceExample.mlx (TestTimeSeriesDataWithTimeToleranceExample) at 14
    In /mathworks/devel/bat/BR2020ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 88
    In /mathworks/devel/bat/BR2020ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 80
    In /mathworks/devel/bat/BR2020ad/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 52
    In /mathworks/devel/bat/BR2020ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 347
    In /mathworks/devel/bat/BR2020ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 302
    In /mathworks/devel/bat/BR2020ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 143
    In /mathworks/devel/bat/BR2020ad/build/matlab/tools/build_using_matlab/BML.m (BML) at 13

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

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

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

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

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

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

В этом примере первым сигналом является timeseries объект с именем Wave Data это содержит данные для синусоиды.

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

Второй сигнал является также синусоидой на той же частоте с небольшим затуханием и произведенный на различном уровне. Поскольку алгоритм сравнения для MatchesSignal ограничение включает шаг синхронизации, сравнение этих двух сигналов с различными временными векторами не обязательно приводит к непройденному тесту. Второй сигнал брошен к single тип данных и также названный Wave Data таким образом, алгоритм выравнивания может соединить сигналы для сравнения.

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

Сконфигурируйте MatchesSignal Экземпляр и сравнивает данные

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

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

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

Создайте TestCase экземпляр для интерактивного использования и сравнивает sig1_ts и sig2_ts использование MatchesSignal ограничение, MatchesSignalOptions объект и абсолютный допуск 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.

Тестовые передачи. Когда вы запускаете тот же тест снова без опций, заданных MatchesSignalOptions объект, тест перестал работать из-за несовпадающих типов данных.

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

Вопросы совместимости

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

Поведение изменяется в R2020a

Введенный в R2019a