Сравните данные в двух 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
sigID1 — ID сигнала базового сигналаID сигнала для базового сигнала в виде целого числа. Инспектор Данных моделирования присваивает ID сигнала каждому сигналу, когда запуск создается. Можно получить ID сигнала для сигнала с помощью одной из этих функций:
sigID2 — ID сигнала сигнала выдержать сравнениеID сигнала для сигнала выдержать сравнение в виде целого числа. Инспектор Данных моделирования присваивает ID сигнала каждому сигналу, когда запуск создается. Можно получить ID сигнала для сигнала с помощью одной из этих функций:
diff — Результаты сравнения сигналаSimulink.sdi.diffSignalResult | массив Simulink.sdi.diffSignalResult объектыРезультаты сравнения сигнала, возвращенные как Simulink.sdi.DiffSignalResult объект. Комплексные результаты сравнения сигнала возвращены как массив двух DiffSignalResult объекты. Один DiffSignalResult объект содержит действительные данные, и другой содержит мнимые данные. Проверяйте Name свойство DiffSignalResult объект определить, содержит ли это действительные или мнимые данные.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.