exponenta event banner

Класс Simulink.sdi.constraints.Р.Сигнал

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

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

Описание

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

Примечание

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

  • Симулинк ®

  • Toolbox™ обработки сигналов

  • MATLAB ® Coder™

  • 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

Критерии выравнивания для сравнения. Если ожидаемое значение содержит более одного сигнала, алгоритм сравнения Simulation Data Inspector выравнивает сигналы для сравнения между ожидаемым и фактическим значениями. По умолчанию инспектор данных моделирования выравнивается по источнику данных, затем по пути блока, затем по SID, а затем по имени сигнала. Дополнительные сведения об алгоритме выравнивания инспектора данных моделирования см. в разделе Как инспектор данных моделирования сравнивает данные.

Укажите критерии выравнивания в виде массива строк с одним или несколькими из перечисленных ниже параметров в том порядке, в котором они должны учитываться:

  • BlockPath - путь к блоку источника сигнала.

  • SID - идентификатор Simulink. Дополнительные сведения см. в разделе Идентификаторы Simulink.

  • SignalName - название сигнала.

  • DataSource - Путь к переменной.

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

Свойства

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

Ожидаемое значение, используемое в качестве базовой линии для сравнения. Данные для ожидаемого значения должны объединять значения данных со временем. Данные могут быть в любом формате, поддерживаемом инспектором данных моделирования. Инспектору данных моделирования требуются данные в формате, связывающем значения выборки со временем. Поддерживаемые форматы: 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 ограничение использует инспектор данных моделирования для сравнения временных рядов и требует одного из следующих продуктов:

  • Симулинк ®

  • Toolbox™ обработки сигналов

  • MATLAB Coder™

  • 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. Например, чтобы записать модульные тесты на основе классов, см. раздел Запись простого тестового случая с использованием классов.

Создать 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:
        
               Name         ActualSignals      ExpectedSignals 
            ___________    _______________    _________________
        
            "Wave Data"    "<Actual>.Data"    "<Expected>.Data"
    
    Comparison results have been saved to:
    --> /tmp/BR2021ad_1657350_6935/mlx_to_docbook5/comparisonResults_b085887b-f6cb-4cdc-bf4e-e6dd1a5a325b.mldatx
    ------------------
    Stack Information:
    ------------------
    In /tmp/BR2021ad_1657350_6935/mlx_to_docbook5/tpbc009bb6/simulink-ex22803619/TestTimeSeriesDataWithTimeToleranceExample.mlx (TestTimeSeriesDataWithTimeToleranceExample) at 14
    In /mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 84
    In /mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 110
    In /mathworks/devel/bat/BR2021ad/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 43
    In /mathworks/devel/bat/BR2021ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 376
    In /mathworks/devel/bat/BR2021ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 326
    In /mathworks/devel/bat/BR2021ad/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 151
    In /mathworks/devel/bat/BR2021ad/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:
        
               Name         ActualSignals     ActualDataType     ExpectedSignals     ExpectedDataType
            ___________    _______________    ______________    _________________    ________________
        
            "Wave Data"    "<Actual>.Data"      {'single'}      "<Expected>.Data"       {'double'}   
    
    ------------------
    Stack Information:
    ------------------
    In C:\Users\snadeau\AppData\Local\Temp\Editor_oxzoe\LiveEditorEvaluationHelperE1184446395.m (LiveEditorEvaluationHelperE1184446395) at 16
    In E:\jobarchive\Bdoc20b\2020_06_06_h12m11s21_job1400967_pass\matlab\toolbox\matlab\codetools\embeddedoutputs\+matlab\+internal\+editor\evaluateRegions.p (evaluateRegions) at 0
    In E:\jobarchive\Bdoc20b\2020_06_06_h12m11s21_job1400967_pass\matlab\toolbox\matlab\codetools\embeddedoutputs\+matlab\+internal\+editor\EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 0

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

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

В R2020a изменилось поведение

Представлен в R2019a