Пакет: Simulink.sdi.constraints
Суперклассы: matlab.unittest.constraints.Constraint
Ограничение, которое сравнивает данные временных рядов с допусками с помощью Данных моделирования Inspector
Используйте Simulink.sdi.constraints.MatchesSignal
ограничение для сравнения данных временных рядов с ожидаемым значением как части теста. Можно сконфигурировать ограничение, чтобы использовать комбинацию абсолютных, относительных и временных значений допуска для сравнения. Можно также задать дополнительные опции для настройки поведения сравнения с помощью Simulink.sdi.constraints.MatchesSignalOptions
объект или использование одного или нескольких аргументов пары "имя-значение". Для получения дополнительной информации о том, как допуски и опции выравнивания влияют на сравнения, смотрите Как Данные моделирования Inspector Compares Данных.
Примечание
The MatchesSignal
ограничение использует Данные Моделирования Inspector для сравнения и требует лицензии для одного из следующих продуктов:
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'
- Критерии выравнивания сигналовКритерии выравнивания для сравнения. Когда ожидаемое значение содержит более одного сигнала, алгоритм сравнения Данных моделирования Inspector выравнивает сигналы для сравнения между ожидаемым и фактическим значениями. По умолчанию Данные Моделирования Inspector выравниваются по источнику данных, затем по пути блока, затем по SID, а затем по имени сигнала. Для получения дополнительной информации об алгоритме выравнивания Данных моделирования Inspector см. Раздел «Как Данные моделирования Inspector сравнивает данные».
Задайте критерии выравнивания как строковые массивы с одной или несколькими из следующих опций, перечисленных в том порядке, в котором они должны быть рассмотрены:
BlockPath
- Путь к исходному блоку для сигнала.
SID
- Идентификатор Simulink. Для получения дополнительной информации см. Раздел «Идентификаторы Simulink».
SignalName
- Имя сигнала.
DataSource
- Путь переменной.
Пример: 'AligningBy',["SignalName","BlockPath"]
задает выравнивание сигнала по имени сигнала, а затем по пути блока.
Expected
- Ожидаемое значение для использования в качестве базового уровня для сравненияОжидаемое значение для использования в качестве опорной структуры для сравнения. Данные для ожидаемого значения должны связывать значения данных со временем. Данные могут быть в любом формате, поддерживаемом Данными моделирования Inspector. Инспектор Данных моделирования требует данных в формате, который связывает выборку значения со временем. Поддерживаемые форматы включают timeseries
, Structure with time
, и Dataset
.
Можно задать ожидаемое значение для ограничения с помощью переменной в рабочей области, которая содержит данные, или путем определения полного пути или имени файла, который содержит данные, в виде строкового скаляра или символьного массива.
GetAccess | public |
SetAccess | immutable |
MatchesSignalOptions
- Опции строения сравнения ограниченийSimulink.sdi.constraints.MatchesSignalOptions
Simulink.sdi.constraints.MatchesSignalOptions
объект, который задает опции для настройки сравнения для ограничения. По умолчанию сравнение использует настройки выравнивания по умолчанию для Данных моделирования Inspector и имеет строгие критерии принятия, что означает, что сравнение не игнорирует никаких проверок. Можно использовать MatchesSignalOptions
свойство, чтобы сконфигурировать, как ограничение выравнивает сигналы в ожидаемом и фактическом запусках и чувствительны ли тесты, использующие ограничение:
Фактическое значение, имеющее различные типы данных от ожидаемого значения.
Один или несколько сигналов, не совпадающих между ожидаемым и фактическим запусками.
Фактическое значение, содержащее данные за пределами временного интервала, заданного ожидаемым значением.
Можно задать MatchesSignalOptions
свойство ограничения, использующее отдельные аргументы пары "имя-значение" или пару "имя-значение" 'WithOptions'
с Simulink.sdi.constraints.MatchesSignalOptions
объект как значение. Когда вы задаете MatchesSignalOptions
свойство с использованием MatchesSignalOptions
можно использовать одну пару "имя-значение", чтобы сконфигурировать все опции для сравнений, которые используют ограничение.
GetAccess | public |
SetAccess | immutable |
Типы данных: Simulink.sdi.constraints.MatchesSignalOptions
AbsTol
- Абсолютная погрешность для сравненияАбсолютная погрешность для сравнений с использованием ограничения. Для получения дополнительной информации о том, как Данные моделирования Inspector используют значения допусков в сравнениях, смотрите, Как Данные моделирования Inspector сравнивают данные.
Пример: 0.1
Пример: 2
GetAccess | public |
SetAccess | immutable |
Типы данных: double
RelTol
- Относительная погрешность для сравненияОтносительная погрешность для сравнений с использованием ограничения. Для примера задайте 0.1
использование 10% допуска для сравнения. Для получения дополнительной информации о том, как Данные моделирования Inspector используют значения допусков в сравнениях, смотрите, Как Данные моделирования Inspector сравнивают данные.
Пример: 0.05
GetAccess | public |
SetAccess | immutable |
Типы данных: double
TimeTol
- Допуск по времени для сравненияДопуск по времени для сравнений с использованием ограничения, в секундах. Для получения дополнительной информации о том, как Данные моделирования Inspector используют значения допусков в сравнениях, смотрите, Как Данные моделирования Inspector сравнивают данные.
Пример: 0.001
GetAccess | public |
SetAccess | immutable |
Типы данных: double
В этом примере показано, как использовать Simulink.sdi.constraints.MatchesSignal
ограничение для сравнения данных временных рядов с помощью данных, сгенерированных в рабочей области. Можно использовать MatchesSignal
ограничение для сравнения данных из многих источников, включая измеренные тестовые данные в файле и записанные выходы симуляции.
Когда вы используете MatchesSignal
ограничение, можно задать абсолютные, относительные и временные допуски для использования в сравнении. The MatchesSignal
ограничение использует алгоритм сравнения Данных моделирования Inspector, который включает шаги для выравнивания и синхронизации. Для получения дополнительной информации об алгоритме см. Раздел «Как Данные моделирования Inspector сравнивает Данные».
The MatchesSignal
ограничение использует Данные Моделирования Inspector для сравнения временных рядов и требует одного из следующих продуктов:
Simulink ®
Signal Processing Toolbox™
Файлы MATLAB Coder™
Fixed-Point Designer™
Создание данных временных рядов
Этот пример генерирует данные рабочей области в timeseries
формат только для иллюстративных целей. Можно использовать MatchesSignal
ограничение для сравнения данных из других источников, таких как симуляция выходов или файл, содержащий тестовые данные, и ограничение может сравнивать данные временных рядов в любом формате, поддерживаемом Данными моделирования Inspector.
В этом примере первый сигнал является 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
Диагностическая информация показывает, что проверка не выполнена. Когда тест не проходит, результаты сравнения и исходные данные запуска сохраняются в файле сеанса Данные Моделирования Inspector. Щелкните ссылку для файла MLDATX, чтобы открыть сеанс в Данные моделирования Inspector, где можно исследовать данные, сравниваемые тестом и результатами сравнения. При просмотре результатов можно увидеть, что ослабление создает различие и приводит к ошибке сравнения.
Задайте абсолютную погрешность 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
ограничение для сравнения данных из других источников, таких как симуляция выходов или файл, содержащий тестовые данные, и ограничение может сравнивать данные временных рядов в любом формате, поддерживаемом Данными моделирования Inspector.
В этом примере первый сигнал является 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
сбой ограничения, диагностическая информация обеспечивает путь и ссылку на файл сеанса Данные Моделирования Inspector, который включает результаты сравнения и исходные данные, сравниваемые тестом. Откройте файл сеанса, чтобы просмотреть данные и результаты сравнения в Данные моделирования Inspector.
В предыдущих релизах диагностическая информация включала путь и ссылку на статическое изображение результатов сравнения. Диагностическая информация больше не включает изображение.
matlab.unittest.constraints Package
| matlab.unittest.constraints.Constraint
| matlab.unittest.TestCase
| Simulink.sdi.constraints.MatchesSignalOptions
| verifyThat
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.