Simulink.sdi.DiffRunResult

Доступ к результатам сравнения прогонов

Описание

The Simulink.sdi.DiffRunResult объект предоставляет доступ для запуска метаданных сравнения и результатов сравнения. Используйте getSignalByIndex функция для доступа к метаданным и результатам сравнения для каждого сигнала при сравнении запуска.

Создание

A Simulink.sdi.DiffRunResult Объект создается при сравнении с помощью Данных моделирования Inspector.

Когда вы сравниваете данные с помощью UI, используйте Simulink.sdi.getCurrentComparison функция для доступа к результатам в Simulink.sdi.DiffRunResult объект.

Программные сравнения с использованием Simulink.sdi.compareRuns функцию или compare функция возвращает DiffRunResult объект.

Свойства

расширить все

Это свойство доступно только для чтения.

Версия MATLAB® используется для создания DiffRunResult объект, возвращенный как вектор символов.

Это свойство доступно только для чтения.

Запустите идентификатор для сравнительного базового запуска, возвращенный как целое число.

Это свойство доступно только для чтения.

Выполните идентификатор запуска, возвращенный как целое число.

Это свойство доступно только для чтения.

Количество сигналов, которые выровнены между двумя запусками в сравнении, возвращено как целое число. Для получения дополнительной информации о том, как сигналы выравниваются для сравнений, смотрите Выравнивание.

Это свойство доступно только для чтения.

Дата и время Simulink.sdi.DiffRunResult объект был создан, возвращен как datetime объект.

Типы данных: datetime

Это свойство доступно только для чтения.

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

  • AbsTol - Глобальная абсолютная погрешность, используемый для сравнения запусков.

  • RelTol - Глобальная относительная погрешность, используемый для сравнения запусков.

  • TimeTol - Глобальный временной допуск, используемый для сравнения запусков.

Для получения дополнительной информации о том, как используются допуски и вычисляются для сравнения, см. «Спецификация допусков».

Это свойство доступно только для чтения.

Сводные данные результатов сравнения, возвращенная как структура с полем для каждого Status результат сравнения сигналов может иметь. Значение каждого поля указывает количество сигналов в запуске сравнения с соответствующим Status.

  • WithinTolerance - Сравнение сигналов завершено, и все сравниваемые точки данных находятся в пределах заданного допуска.

  • OutOfTolerance - Сравнение сигналов завершено, и некоторые сравниваемые точки данных вышли за пределы заданного допуска.

  • Unaligned - Сигнал от базового запуска не совпал с сигналом в запуске для сравнения.

  • Empty - Выровненный сигнал в базовом прогоне или запуске для сравнения не содержит данных.

  • EmptySynced - Синхронизированный сигнал в базовом запуске или запуске для сравнения не содержит данных. Пустой синхронизированный сигнал может означать, что сигналы не перекрываются или, если вы задали intersection метод синхронизации, который они включали ни один из тех же временных точек,

  • Canceled - Результат сигнала не вычислен, потому что пользователь отменил сравнение.

  • Pending - Сравнение выполняется, и расчет результата сигнала не начат.

  • Processing - Выполняется расчет результата сигнала.

  • UnitsMismatch - Блоки сигналов в базовом запуске и запуске для сравнения не совпадают.

  • DataTypeMismatch - Типы данных сигнала в базовом запуске и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки типов данных сигнала, могут иметь этот статус.

  • TimeMismatch - Векторы времени сигнала в базовом прогоне и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки временных векторов сигнала, могут иметь этот статус.

  • StartStopMismatch - Время запуска и остановки сигнала в базовом запуске и запуске для сравнения не совпадают. Только результаты сравнений, сконфигурированные для проверки времени запуска и остановки сигнала, могут иметь этот статус.

  • Unsupported - Алгоритм сравнения Simulation Data Inspector не поддерживает этот тип сигнала. Например, сигналы с типами данных, которые теряют точность при преобразовании в double не поддерживаются.

Для получения дополнительной информации о выравнивании, допусках и синхронизации смотрите, Как Данные моделирования Inspector сравнивают Данные. Дополнительные сведения о том, как настроить сравнение для проверки дополнительных метаданных, см. в разделе Simulink.sdi.compareRuns.

Это свойство доступно только для чтения.

Строения опции, используемые для сравнения, возвращенные как n -by- 2 массив ячеек. Каждая строка в массиве ячеек соответствует опции, используемой сравнением. Каждое сравнение требует, чтобы выровненные модули измерения сигнала совпадали, поэтому Options свойство всегда содержит строку, указывающую, что модули должны совпадать. Другие возможные опции строения соответствуют этим парам "имя-значение" для Simulink.sdi.compareRuns функция:

  • DataType

  • Time

  • StartStop

  • StopOnFirstMismatch

Это свойство доступно только для чтения.

Состояние сравнения запусков, указывающее на завершение сравнения, возвращается как одно из следующего:

  • Completed - Сравнение завершило вычисление всех результатов

  • Canceled - Сравнение завершилось, потому что пользователь отменил операцию сравнения в пользовательском интерфейсе

  • Stopped - Сравнение завершилось, поскольку сравнение обнаружило несоответствие и было сконфигурировано, чтобы остановить первое несоответствие

Это свойство доступно только для чтения.

Результат сигнала для сравнения сигнала, который заставил сравнение запуска остановиться, не сравнивая оставшиеся сигналы, возвращенный как 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 ограничение.

Введенный в R2012b