Доступ к результатам сравнения прогонов
The Simulink.sdi.DiffRunResult
объект предоставляет доступ для запуска метаданных сравнения и результатов сравнения. Используйте getSignalByIndex
функция для доступа к метаданным и результатам сравнения для каждого сигнала при сравнении запуска.
A Simulink.sdi.DiffRunResult
Объект создается при сравнении с помощью Данных моделирования Inspector.
Когда вы сравниваете данные с помощью UI, используйте Simulink.sdi.getCurrentComparison
функция для доступа к результатам в Simulink.sdi.DiffRunResult
объект.
Программные сравнения с использованием Simulink.sdi.compareRuns
функцию или compare
функция возвращает DiffRunResult
объект.
MatlabVersion
- Версия программного обеспечения, используемая для создания объектаЭто свойство доступно только для чтения.
Версия MATLAB® используется для создания DiffRunResult
объект, возвращенный как вектор символов.
RunID1
- Идентификатор базового запускаЭто свойство доступно только для чтения.
Запустите идентификатор для сравнительного базового запуска, возвращенный как целое число.
RunID2
- идентификатор для выполнения для сравненияЭто свойство доступно только для чтения.
Выполните идентификатор запуска, возвращенный как целое число.
Count
- Количество сравниваемых сигналовЭто свойство доступно только для чтения.
Количество сигналов, которые выровнены между двумя запусками в сравнении, возвращено как целое число. Для получения дополнительной информации о том, как сигналы выравниваются для сравнений, смотрите Выравнивание.
DateCreated
- Дата создания объектаdatetime
Это свойство доступно только для чтения.
Дата и время Simulink.sdi.DiffRunResult
объект был создан, возвращен как datetime
объект.
Типы данных: datetime
GlobalTolerance
- Значения глобального допуска, используемые для сравненияЭто свойство доступно только для чтения.
Глобальные значения допуска, используемые для сравнения запусков, возвращаются как структура с полями:
AbsTol
- Глобальная абсолютная погрешность, используемый для сравнения запусков.
RelTol
- Глобальная относительная погрешность, используемый для сравнения запусков.
TimeTol
- Глобальный временной допуск, используемый для сравнения запусков.
Для получения дополнительной информации о том, как используются допуски и вычисляются для сравнения, см. «Спецификация допусков».
Summary
- сводные данные результатов сравненияЭто свойство доступно только для чтения.
Сводные данные результатов сравнения, возвращенная как структура с полем для каждого Status
результат сравнения сигналов может иметь. Значение каждого поля указывает количество сигналов в запуске сравнения с соответствующим Status
.
WithinTolerance
- Сравнение сигналов завершено, и все сравниваемые точки данных находятся в пределах заданного допуска.
OutOfTolerance
- Сравнение сигналов завершено, и некоторые сравниваемые точки данных вышли за пределы заданного допуска.
Unaligned
- Сигнал от базового запуска не совпал с сигналом в запуске для сравнения.
Empty
- Выровненный сигнал в базовом прогоне или запуске для сравнения не содержит данных.
EmptySynced
- Синхронизированный сигнал в базовом запуске или запуске для сравнения не содержит данных. Пустой синхронизированный сигнал может означать, что сигналы не перекрываются или, если вы задали intersection
метод синхронизации, который они включали ни один из тех же временных точек,
Canceled
- Результат сигнала не вычислен, потому что пользователь отменил сравнение.
Pending
- Сравнение выполняется, и расчет результата сигнала не начат.
Processing
- Выполняется расчет результата сигнала.
UnitsMismatch
- Блоки сигналов в базовом запуске и запуске для сравнения не совпадают.
DataTypeMismatch
- Типы данных сигнала в базовом запуске и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки типов данных сигнала, могут иметь этот статус.
TimeMismatch
- Векторы времени сигнала в базовом прогоне и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки временных векторов сигнала, могут иметь этот статус.
StartStopMismatch
- Время запуска и остановки сигнала в базовом запуске и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки времени запуска и остановки сигнала, могут иметь этот статус.
Unsupported
- Алгоритм сравнения Simulation Data Inspector не поддерживает этот тип сигнала. Например, сигналы с типами данных, которые теряют точность при преобразовании в double
не поддерживаются.
Для получения дополнительной информации о выравнивании, допусках и синхронизации смотрите, Как Данные моделирования Inspector сравнивают Данные. Дополнительные сведения о том, как настроить сравнение для проверки дополнительных метаданных, см. в разделе Simulink.sdi.compareRuns
.
Options
- Конфигурация сравнения- 2
массив ячеекЭто свойство доступно только для чтения.
Строения опции, используемые для сравнения, возвращенные как n -by- 2
массив ячеек. Каждая строка в массиве ячеек соответствует опции, используемой сравнением. Каждое сравнение требует, чтобы выровненные модули измерения сигнала совпадали, поэтому Options
свойство всегда содержит строку, указывающую, что модули должны совпадать. Другие возможные опции строения соответствуют этим парам "имя-значение" для Simulink.sdi.compareRuns
функция:
DataType
Time
StartStop
StopOnFirstMismatch
Status
- Состояние сравнения прогоновCompleted
| Canceled
| Stopped
Это свойство доступно только для чтения.
Состояние сравнения запусков, указывающее на завершение сравнения, возвращается как одно из следующего:
Completed
- Сравнение завершило вычисление всех результатов
Canceled
- Сравнение завершилось, потому что пользователь отменил операцию сравнения в пользовательском интерфейсе
Stopped
- Сравнение завершилось, поскольку сравнение обнаружило несоответствие и было сконфигурировано, чтобы остановить первое несоответствие
StopReason
- Результат сигнала, который остановил сравнение прогонаSimulink.sdi.DiffSignalResult
Это свойство доступно только для чтения.
Результат сигнала для сравнения сигнала, который заставил сравнение запуска остановиться, не сравнивая оставшиеся сигналы, возвращенный как Simulink.sdi.DiffSignalResult
объект. The StopReason
свойство пусто, когда сравнение завершается, не обнаруживая несоответствия, и когда сравнение не сконфигурировано, чтобы остановить первое несоответствие. Можно сконфигурировать симуляцию, чтобы остановить первое несоответствие с помощью Simulink.sdi.compareRuns
функции и 'StopOnFirstMismatch'
Пара "имя-значение".
getResultByIndex | Результат сравнения возвращаемого сигнала |
saveResult | Сохраните результаты сравнения в файл MLDATX |
Можно программно задать значения допуска сигнала для использования в сравнениях, выполненных с помощью Данных моделирования Inspector. В этом примере вы сравниваете данные, собранные путем симуляции модели продольной системы управления рейсом самолета. Каждая симуляция использует разное значение для временной константы входного фильтра и регистрирует входные и выходные сигналы. Вы анализируете эффект изменения постоянной времени путем сравнения результатов с помощью Данные Моделирования Inspector и допусков сигнала.
Во-первых, загрузите файл сеанса, который содержит данные моделирования.
Simulink.sdi.load('AircraftExample.mldatx');
Файл сеанса содержит четыре запусков. В этом примере вы сравниваете данные первых двух запусков в файле. Доступ к Simulink.sdi.Run
объекты для первых двух запусков, загруженные из файла.
runIDs = Simulink.sdi.getAllRunIDs; runIDTs1 = runIDs(end-3); runIDTs2 = runIDs(end-2);
Теперь сравните эти два запусков, не задавая никаких допусков.
noTolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);
Используйте getResultByIndex
функция для доступа к результатам сравнения для q
и alpha
сигналы.
qResult = getResultByIndex(noTolDiffResult,1); alphaResult = getResultByIndex(noTolDiffResult,2);
Проверьте Status
из каждого результата сигнала, чтобы увидеть, попадает ли результат сравнения в наш вне допуска.
qResult.Status
ans = OutOfTolerance
alphaResult.Status
ans = OutOfTolerance
В сравнении использовалось значение 0
для всех допусков, поэтому OutOfTolerance
результат означает, что сигналы не идентичны.
Можно дополнительно проанализировать эффект постоянной времени, задав значения допуска для сигналов. Задайте допуски путем установки свойств для Simulink.sdi.Signal
объекты, которые соответствуют сравниваемым сигналам. В сравнениях используются допуски, заданные для базовых сигналов. Этот пример задает временным допуском и абсолютной погрешностью.
Чтобы задать допуск, сначала получите доступ к Signal
объекты из запуска опорной структуры.
runTs1 = Simulink.sdi.getRun(runIDTs1); qSig = getSignalsByName(runTs1,'q, rad/sec'); alphaSig = getSignalsByName(runTs1,'alpha, rad');
Задайте абсолютную погрешность 0.1
и временной допуск 0.6
для q
сигнал с использованием AbsTol
и TimeTol
свойства.
qSig.AbsTol = 0.1; qSig.TimeTol = 0.6;
Задайте абсолютную погрешность 0.2
и временной допуск 0.8
для alpha
сигнал.
alphaSig.AbsTol = 0.2; alphaSig.TimeTol = 0.8;
Сравните результаты еще раз. Получите доступ к результатам сравнения и проверьте Status
свойство для каждого сигнала.
tolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); qResult2 = getResultByIndex(tolDiffResult,1); alphaResult2 = getResultByIndex(tolDiffResult,2); qResult2.Status
ans = WithinTolerance
alphaResult2.Status
ans = WithinTolerance
Можно использовать Simulink.sdi.compareRuns
функция для сравнения сигнальных данных и метаданных, включая тип данных и начало и времена остановки. Одно сравнение может проверить несоответствие в одной или нескольких частях метаданных. Когда вы проверяете на несоответствие в метаданных сигнала, Summary
свойство Simulink.sdi.DiffRunResult
объект может отличаться от базового сравнения, потому что Status
свойство для Simulink.sdi.DiffSignalResult
объект может указывать на несоответствие метаданных. Можно сконфигурировать сравнения с помощью Simulink.sdi.compareRuns
функция для импортированных данных и данных, записанных из симуляции.
Этот пример конфигурирует сравнение запусков, созданных из данных рабочей области, тремя способами, чтобы показать, как Summary
от DiffSignalResult
объект может предоставить определенную информацию о несоответствии сигналов.
Создание данных рабочей области
The Simulink.sdi.compareRuns
функция сравнивает данные временных рядов. Создайте данные для синусоиды, которая будет использоваться в качестве базового сигнала, используя timeseries
формат. Отдайте timeseries
имя Wave Data
.
time = 0:0.1:20;
sig1vals = sin(2*pi/5*time);
sig1_ts = timeseries(sig1vals,time);
sig1_ts.Name = 'Wave Data';
Создайте вторую синусоиду, чтобы сравнить с базовым сигналом. Используйте немного другой временной вектор и ослабьте сигнал, чтобы эти два сигнала не были идентичными. Приведите данные сигнала к single
тип данных. Также назовите это timeseries
Wave Data объекта
. Алгоритм сравнения Данных моделирования Inspector выравнивает эти сигналы для сравнения с использованием имени.
time2 = 0:0.1:22;
sig2vals = single(0.98*sin(2*pi/5*time2));
sig2_ts = timeseries(sig2vals,time2);
sig2_ts.Name = 'Wave Data';
Создайте и сравните Запуски в Данные моделирования Inspector
The Simulink.sdi.compareRuns
функция сравнивает данные, содержащиеся в Simulink.sdi.Run
объекты. Используйте Simulink.sdi.createRun
функция для создания запусков в Данные моделирования Inspector для данных. The Simulink.sdi.createRun
функция возвращает идентификатор запуска для каждого созданного запуска.
runID1 = Simulink.sdi.createRun('Baseline Run','vars',sig1_ts); runID2 = Simulink.sdi.createRun('Compare to Run','vars',sig2_ts);
Можно использовать Simulink.sdi.compareRuns
функция для сравнения запусков. Алгоритм сравнения преобразует данные сигнала в double
тип данных и синхронизирует данные сигнала перед вычислением сигнала различия.
basic_DRR = Simulink.sdi.compareRuns(runID1,runID2);
Проверьте Summary
свойство возвращенного Simulink.sdi.DiffRunResult
объект, чтобы увидеть результат сравнения.
basic_DRR.Summary
ans = struct with fields:
OutOfTolerance: 1
WithinTolerance: 0
Unaligned: 0
UnitsMismatch: 0
Empty: 0
Canceled: 0
EmptySynced: 0
DataTypeMismatch: 0
TimeMismatch: 0
StartStopMismatch: 0
Unsupported: 0
Различие между сигналами вне допуска.
Сравнение запусков и проверка соответствия типа данных
В зависимости от ваших системных требований, можно хотеть, чтобы типы данных для сигналов, которые вы сравниваете, совпадали. Можно использовать Simulink.sdi.compareRuns
функция, чтобы сконфигурировать алгоритм сравнения, чтобы проверить и сообщить о несоответствии типов данных.
dataType_DRR = Simulink.sdi.compareRuns(runID1,runID2,'DataType','MustMatch'); dataType_DRR.Summary
ans = struct with fields:
OutOfTolerance: 0
WithinTolerance: 0
Unaligned: 0
UnitsMismatch: 0
Empty: 0
Canceled: 0
EmptySynced: 0
DataTypeMismatch: 1
TimeMismatch: 0
StartStopMismatch: 0
Unsupported: 0
Результат сравнения сигналов теперь DataTypeMismatch
потому что данные для базового сигнала double
тип данных, в то время как данные для сигнала по сравнению с базовой линией single
тип данных.
Сравнение Запусков и проверки на начало и Время остановки соответствия
Можно использовать Simulink.sdi.compareRuns
функция, чтобы сконфигурировать алгоритм сравнения, чтобы проверить, имеют ли выровненные сигналы одинаковые начало и времена остановки.
startStop_DRR = Simulink.sdi.compareRuns(runID1,runID2,'StartStop','MustMatch'); startStop_DRR.Summary
ans = struct with fields:
OutOfTolerance: 0
WithinTolerance: 0
Unaligned: 0
UnitsMismatch: 0
Empty: 0
Canceled: 0
EmptySynced: 0
DataTypeMismatch: 0
TimeMismatch: 0
StartStopMismatch: 1
Unsupported: 0
Результат сравнения сигналов теперь StartStopMismatch
потому что сигналы, созданные в рабочей области, имеют разные времена остановки.
Можно просматривать и просматривать результаты сравнения с помощью пользовательского интерфейса Данные Моделирования Inspector. Для получения дополнительной информации см. «Сравнение данных моделирования».
Для тестирования программного обеспечения смотрите Simulink.sdi.constraints.MatchesSignal
ограничение.
compare
| Simulink.sdi.compareRuns
| Simulink.sdi.DiffSignalResult
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.