Simulink.sdi.compareSignals

Сравните данные в двух Simulink.sdi.Signal объекты

Описание

пример

diff = Simulink.sdi.compareSignals(sigID1,sigID2) сравнивает сигналы, которые соответствуют идентификаторам сигнала sigID1 и sigID2 и возвращает результаты в Simulink.sdi.DiffSignalResult объект. Для получения дополнительной информации о том, как результаты сравнения вычисляются, видят, Как Инспектор Данных моделирования Сравнивает Данные.

Примеры

свернуть все

Этот пример использует slexAircraftExample модель, чтобы продемонстрировать, как сравнить сигналы ввода и вывода системы управления.

Сконфигурируйте и симулируйте модель

slexAircraftExample модель не делает данных логов. Загрузите модель и отметьте сигналы ввода и вывода для логгирования.

load_system('slexAircraftExample')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on')
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

Симулируйте модель. Данные для регистрируемых сигналов регистрируют Инспектору Данных моделирования и к рабочей области.

out = sim('slexAircraftExample');

Доступ к данным моделирования

Используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить доступ к данным. Simulink.sdi.Run.getLatest функция возвращает последний раз созданный запуск в Инспекторе Данных моделирования репозиторий. Используйте getSignalIDByIndex функционируйте, чтобы получить доступ к идентификаторам сигнала для регистрируемых сигналов.

aircraftRun = Simulink.sdi.Run.getLatest;

signalID1 = getSignalIDByIndex(aircraftRun,1);
signalID2 = getSignalIDByIndex(aircraftRun,2);

Задайте значения допуска

Можно задать значения допуска, чтобы использовать в сравнении в качестве свойства в регистрируемом Simulink.sdi.Signal объект. Используйте Simulink.sdi.getSignal функционируйте, чтобы получить доступ к Signal объект с помощью ID сигнала.

signal1 = Simulink.sdi.getSignal(signalID1);
signal1.AbsTol = 0.1;

Сравните сигналы

Используйте Simulink.sdi.compareSignals функция, чтобы сравнить сигналы ввода и вывода. Этот пример использует isValidSignalID функция, чтобы проверить, что оба идентификатора сигнала все еще допустимы прежде, чем вызвать Simulink.sdi.compareSignals функция. ID сигнала становится недопустимым, когда сигнал удален от Инспектора Данных моделирования. После сравнения проверяйте состояние в Simulink.sdi.DiffSignalResult объект.

if (isValidSignalID(aircraftRun,signalID1) && isValidSignalID(aircraftRun,signalID2))
    sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2);

    match = sigDiff.Status
end
match = 
OutOfTolerance

Результат сравнения вне допуска. Можно использовать Simulink.sdi.view функция, чтобы смотреть и анализировать результаты сравнения.

В этом примере показано, как сравнить сигналы от различных запусков симуляции с помощью Инспектора Данных моделирования Simulink.sdi.compareSignals функция. Когда у вас только есть один сигнал интереса выдержать сравнение, использование сравнения сигнала возвращает Simulink.sdi.diffSignalResult объект с данными о сравнении непосредственно.

Сгенерируйте данные моделирования

Используйте slexAircraftExample модель, чтобы сгенерировать запуски симуляции. Между запусками измените постоянную времени входного фильтра.

% Load example model
load_system('slexAircraftExample')

% Mark the alpha, rad signal for streaming
Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')

% Simulate system
out_1 = sim('slexAircraftExample');

% Change input filter time constant
modelWorkspace = get_param('slexAircraftExample','modelworkspace');
assignin(modelWorkspace,'Ts',0.2)

% Simulate again
out_2 = sim('slexAircraftExample');

Получите идентификаторы сигнала для сравнения сигнала

Создайте объекты запуска с помощью идентификаторов запуска, и затем используйте getSignalIDByIndex заставить идентификаторы сигнала передавать Simulink.sdi.compareSignals.

% Get run data
runIDs = Simulink.sdi.getAllRunIDs;

runID1 = runIDs(end-1);
runID2 = runIDs(end);

run1 = Simulink.sdi.getRun(runID1);
run2 = Simulink.sdi.getRun(runID2);

sigID1 = getSignalIDByIndex(run1,1);
sigID2 = getSignalIDByIndex(run2,1);

Сравните сигналы

Сравните сигналы и откройте Инспектора Данных моделирования, чтобы просмотреть результаты.

diffResult = Simulink.sdi.compareSignals(sigID1,sigID2);

Simulink.sdi.view

Входные параметры

свернуть все

ID сигнала для базового сигнала в виде целого числа. Инспектор Данных моделирования присваивает ID сигнала каждому сигналу, когда запуск создается. Можно получить ID сигнала для сигнала с помощью одной из этих функций:

ID сигнала для сигнала выдержать сравнение в виде целого числа. Инспектор Данных моделирования присваивает ID сигнала каждому сигналу, когда запуск создается. Можно получить ID сигнала для сигнала с помощью одной из этих функций:

Выходные аргументы

свернуть все

Результаты сравнения сигнала, возвращенные как Simulink.sdi.DiffSignalResult объект. Комплексные результаты сравнения сигнала возвращены как массив двух DiffSignalResult объекты. Один DiffSignalResult объект содержит действительные данные, и другой содержит мнимые данные. Проверяйте Name свойство DiffSignalResult объект определить, содержит ли это действительные или мнимые данные.

Представленный в R2011b