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