Сравните данные в двух 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.