Результаты сравнения прогона Access
Simulink.sdi.DiffRunResult объект обеспечивает доступ к метаданным сравнения и результатам сравнения. Используйте getSignalByIndex функция доступа к метаданным и результатам сравнения для каждого сигнала при сравнении прогонов.
A Simulink.sdi.DiffRunResult создается при выполнении сравнения с помощью инспектора расчетных данных.
При сравнении данных с помощью пользовательского интерфейса используйте 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 не поддерживаются.
Дополнительные сведения о выравнивании, допусках и синхронизации см. в разделе Как инспектор данных моделирования сравнивает данные. Дополнительные сведения о настройке сравнения для проверки дополнительных метаданных см. в разделе 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 объект. StopReason пустое свойство, когда сравнение завершается без обнаружения несоответствия и когда сравнение не настроено на остановку при первом несоответствии. Можно настроить моделирование для остановки при первом несоответствии с помощью Simulink.sdi.compareRuns функции и 'StopOnFirstMismatch' пара имя-значение.
getResultByIndex | Результат сравнения обратного сигнала |
saveResult | Сохранение результатов сравнения в файл MLDATX |
Можно программно задать значения допусков сигнала для использования при сравнениях, выполняемых с помощью инспектора данных моделирования. В этом примере сравниваются данные, собранные путем моделирования модели системы управления продольным полетом самолета. Каждое моделирование использует разное значение для постоянной времени входного фильтра и регистрирует входной и выходной сигналы. Влияние изменения постоянной времени анализируется путем сравнения результатов с помощью инспектора данных моделирования и допусков сигнала.
Сначала загрузите файл сеанса, содержащий данные моделирования.
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 объект может предоставлять конкретную информацию о несоответствиях сигналов.
Создание данных рабочей области
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. Алгоритм сравнения Simulation 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';Создание и сравнение прогонов в инспекторе расчетных данных
Simulink.sdi.compareRuns функция сравнивает данные, содержащиеся в Simulink.sdi.Run объекты. Используйте Simulink.sdi.createRun для создания прогонов в инспекторе данных моделирования. 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 потому что сигналы, созданные в рабочей области, имеют разное время остановки.
Результаты сравнения можно просмотреть и проверить с помощью пользовательского интерфейса инспектора данных моделирования. Дополнительные сведения см. в разделе Сравнение данных моделирования.
Для получения информации о тестах программного обеспечения см. Simulink.sdi.constraints.MatchesSignal ограничение.
compare | Simulink.sdi.compareRuns | Simulink.sdi.DiffSignalResult
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.