Пакет: 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
'IgnoringDataTypes'
— Ограничительное поведение, когда типы данных не соответствуютfalse
(значение по умолчанию) | true
Сконфигурируйте ограничительную чувствительность к фактическому значению, имеющему другой тип данных от ожидаемого значения.
false
— Ограничение проверяет ли ожидаемое значение и соответствие типов данных фактического значения.
true
— Ограничение нечувствительно к неверным типам данных между ожидаемым значением и фактическим значением.
Пример: 'IgnoringDataTypes',true
'IgnoringSignalsNotAligned'
— Ограничительное поведение, когда сигналы не выравниваютсяfalse
(значение по умолчанию) | true
Сконфигурируйте ограничительную чувствительность к одному или нескольким сигналам, не выравнивающимся между ожидаемым значением и фактическим значением.
false
— Ограничение проверяет на сигналы, которые не выравниваются между ожидаемым значением и фактическим значением.
true
— Ограничение нечувствительно к одному или нескольким сигналам, не выравнивающимся между ожидаемым значением и фактическим значением.
Пример: 'IgnoringSignalsNotAligned',true
'IgnoringExtraData'
— Ограничительное поведение, когда фактическое значение покрывает различный временной интервал от ожидаемого значенияfalse
(значение по умолчанию) | true
Сконфигурируйте ограничительную чувствительность к фактическому значению, содержащему данные за пределами временного интервала, заданного ожидаемым значением.
false
— Ограничение проверяет, содержит ли фактическое значение данные вне временного интервала, заданного ожидаемым значением.
true
— Ограничение нечувствительно к фактическому значению, содержащему данные вне временного интервала, заданного ожидаемым значением.
Пример: 'IgnoringExtraData',true
'AligningBy'
— Критерии выравнивания сигналаКритерии выравнивания сравнения. Когда ожидаемое значение содержит больше чем один сигнал, Инспектор Данных моделирования, алгоритм сравнения выравнивает сигналы для сравнения между ожидаемыми и фактическими значениями. По умолчанию Инспектор Данных моделирования выравнивается источником данных, затем блоком path, затем SID, и затем именем сигнала. Для получения дополнительной информации об Инспекторе Данных моделирования алгоритм выравнивания, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Задайте критерии выравнивания как массив строк с одним или несколькими из этих опций, перечисленных в порядке, в котором вы хотите их рассмотренный:
BlockPath
— Путь к исходному блоку для сигнала.
SID
— Идентификатор Simulink. Для получения дополнительной информации смотрите Идентификаторы Simulink.
SignalName
— Имя сигнала.
DataSource
— Путь переменной.
Пример: 'AligningBy',["SignalName","BlockPath"]
задает выравнивание сигнала именем сигнала и затем блоком path.
Expected
— Ожидаемое значение, чтобы использовать в качестве базовой линии для сравненияОжидаемое значение, чтобы использовать в качестве базовой линии для сравнения. Данные для ожидаемого значения должны соединить значения данных со временем. Данные могут быть в любом формате, поддержанном Инспектором Данных моделирования. Инспектор Данных моделирования требует данных в формате, который сопоставляет демонстрационные значения со временем. Поддерживаемые форматы включают timeseries
, Structure with time
, и Dataset
.
Можно задать ожидаемое значение для ограничения с помощью переменной в рабочей области, которая содержит данные или путем определения полного пути или имени файла файла, который содержит данные как строковый скаляр или символьный массив.
GetAccess | public |
SetAccess | immutable |
MatchesSignalOptions
— Ограничительные параметры конфигурации сравненияSimulink.sdi.constraints.MatchesSignalOptions
Simulink.sdi.constraints.MatchesSignalOptions
объект, который задает опции, чтобы сконфигурировать сравнение для ограничения. По умолчанию сравнение использует настройки выравнивания по умолчанию для Инспектора Данных моделирования и имеет строгие критерии допустимости, означая, что сравнение не игнорирует проверок. Можно использовать MatchesSignalOptions
свойство сконфигурировать, как ограничение выравнивает сигналы в ожидаемых и фактических запусках и чувствительны ли тесты с помощью ограничения к:
Фактическое значение, имеющее другой тип данных от ожидаемого значения.
Один или несколько сигналов, не выравнивающихся между ожидаемыми и фактическими запусками.
Фактическое значение, содержащее данные вне временного интервала, задано ожидаемым значением.
Можно задать MatchesSignalOptions
свойство для ограничения с помощью отдельных аргументов пары "имя-значение" или с помощью пары "имя-значение" 'WithOptions'
с Simulink.sdi.constraints.MatchesSignalOptions
возразите как значение. Когда вы задаете MatchesSignalOptions
свойство с помощью MatchesSignalOptions
объект, можно использовать одну пару "имя-значение", чтобы сконфигурировать все опции для сравнений, которые используют ограничение.
GetAccess | public |
SetAccess | immutable |
Типы данных: Simulink.sdi.constraints.MatchesSignalOptions
AbsTol
— Абсолютная погрешность для сравненияАбсолютная погрешность для сравнений с помощью ограничения. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Пример 2
GetAccess | public |
SetAccess | immutable |
Типы данных: double
RelTol
— Относительная погрешность для сравненияОтносительная погрешность для сравнений с помощью ограничения. Например, задайте 0.1
использовать 10%-й допуск к сравнению. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.05
GetAccess | public |
SetAccess | immutable |
Типы данных: double
TimeTol
— Допуск времени к сравнениюДопуск времени к сравнениям с помощью ограничения, в секундах. Для получения дополнительной информации о том, как Инспектор Данных моделирования использует значения допуска в сравнениях, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 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. Например, чтобы записать модульные тесты, основанные на классах, смотрите Запись Простой Тест Используя Классы.
Создайте 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/BR2020bd_1462360_136931/mlx_to_docbook5/comparisonResults_02ea03f8-ceb2-453f-846b-34077b648cda.mldatx ------------------ Stack Information: ------------------ In /tmp/BR2020bd_1462360_136931/mlx_to_docbook5/tp54f70090/simulink-ex22803619/TestTimeSeriesDataWithTimeToleranceExample.mlx (TestTimeSeriesDataWithTimeToleranceExample) at 14 In /mathworks/devel/bat/BR2020bd/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/evaluateRegions.p (evaluateRegions) at 84 In /mathworks/devel/bat/BR2020bd/build/matlab/toolbox/matlab/codetools/embeddedoutputs/+matlab/+internal/+editor/EvaluationOutputsService.p (EvaluationOutputsService.evalRegions) at 98 In /mathworks/devel/bat/BR2020bd/build/matlab/toolbox/matlab/codetools/+matlab/+internal/+liveeditor/@LiveEditorUtilities/execute.m (execute) at 43 In /mathworks/devel/bat/BR2020bd/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRun) at 364 In /mathworks/devel/bat/BR2020bd/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (doRunConvert) at 314 In /mathworks/devel/bat/BR2020bd/build/matlab/tools/examples/exampletools/+mwtools/liveCodeToDocbook.m (liveCodeToDocbook) at 143 In /mathworks/devel/bat/BR2020bd/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.
MatchesSignal
Ограничительное поведениеВ этом примере показано, как сконфигурировать поведение сравнения 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
Запуск в R2020a, когда тест, который использует Simulink.sdi.constraints.MatchesSignal
ограничительные сбои, диагностическая информация предоставляет путь и ссылку Инспектору Данных моделирования файл сеанса, который включает результаты сравнения и исходные данные, сравненные тестом. Откройте файл сеанса, чтобы смотреть данные и результаты сравнения в Инспекторе Данных моделирования.
В предыдущих релизах диагностическая информация включала путь и ссылку на статическое изображение результатов сравнения. Диагностическая информация больше не включает изображение.
matlab.unittest.constraints Package
| matlab.unittest.constraints.Constraint
| matlab.unittest.TestCase
| Simulink.sdi.constraints.MatchesSignalOptions
| verifyThat
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.