Получите всего Инспектора Данных моделирования идентификаторы запуска
Много задач выполнили использование Инспектора Данных моделирования программируемый интерфейсный запуск с получением ID запуска для запущенной симуляции. Этот пример иллюстрирует несколько методов, чтобы получить ID запуска для запуска. Можно использовать ID запуска, чтобы получить доступ к Simulink.sdi.Run
объект, который содержит данные о запуске и метаданные и выполняет сравнения запуска с помощью Simulink.sdi.compareRuns
функция.
Создайте запуск
Модель sldemo_fuelsys
уже сконфигурирован для логгирования. Когда вы симулируете модель, Инспектор Данных моделирования автоматически создает запуск и присваивает его ID запуска.
load_system('sldemo_fuelsys') sim('sldemo_fuelsys')
Получите запущенный ID Используя Simulink.sdi.getAllRunIDs
Simulink.sdi.getAllRunIDs
функция возвращает массив всех идентификаторов запуска для запусков в Инспекторе Данных моделирования репозиторий, в порядке, с последний раз созданным запуском в конце.
runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end);
Получите запущенный ID Используя Simulink.sdi.getRunIDByIndex
Можно также использовать Simulink.sdi.getRunCount
и Simulink.sdi.getRunIDByIndex
функции, чтобы получить ID запуска для запуска. Этот метод полезен, если вы также хотите использовать count
как переменная подсчета, чтобы индексировать посредством запусков в Инспекторе Данных моделирования репозиторий.
count = Simulink.sdi.getRunCount; runID = Simulink.sdi.getRunIDByIndex(count);
Получите запущенный ID от Simulink.sdi.Run
Объект
Можно также получить ID запуска от Simulink.sdi.Run
объект, который соответствует запуску. Этот пример использует Simulink.sdi.getCurrentSimulationRun
функция, чтобы получить Run
объект, который соответствует новой симуляции sldemo_fuelsys
модель. Можно также использовать Simulink.sdi.Run.getLatest
функционируйте, чтобы получить доступ к последний раз созданному Run
объект.
fuelsysRun = Simulink.sdi.getCurrentSimulationRun('sldemo_fuelsys');
runID = fuelsysRun.ID;
Используя Инспектора Данных моделирования программируемый интерфейс, можно задать значения допуска сигнала, чтобы использовать в сравнениях. Этот пример использует slexAircraftExample
модель и Инспектор Данных моделирования, чтобы оценить эффект изменения постоянной времени для фильтра lowpass после входа управления.
Сконфигурируйте модель
Загрузите модель и отметьте представляющие интерес сигналы для логгирования. Этот пример данные логов для q
и alpha
сигналы.
load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')
Запустите симуляции
Запуститесь симуляции с различным lowpass фильтруют постоянные времени, чтобы сгенерировать результаты выдержать сравнение. slexAircraftExample
модель хранит переменные, сопоставленные моделью в рабочем пространстве модели. Чтобы изменить значение постоянной времени, получите доступ к рабочему пространству модели и используйте assignin
функция.
out1 = sim('slexAircraftExample'); modelWorkspace = get_param('slexAircraftExample','modelworkspace'); assignin(modelWorkspace,'Ts',1) out2 = sim('slexAircraftExample');
Доступ и сравнивает результаты симуляции
Доступ к результатам симуляции с помощью Инспектора Данных моделирования программируемый интерфейс. Каждая симуляция создает запуск в Инспекторе Данных моделирования с уникальным ID запуска. Вы используете идентификаторы запуска, чтобы сравнить результаты симуляции.
runIDs = Simulink.sdi.getAllRunIDs; runIDTs1 = runIDs(end-1); runIDTs2 = runIDs(end);
Используйте Simulink.sdi.compareRuns
функция, чтобы сравнить данные из симуляций. Затем смотрите Status
свойство результата сигнала видеть, находились ли сигналы в пределах допуска по умолчанию 0.
diffRun1 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); sig1Result1 = getResultByIndex(diffRun1,1); sig2Result1 = getResultByIndex(diffRun1,2); sig1Result1.Status
ans = OutOfTolerance
sig2Result1.Status
ans = OutOfTolerance
Сравните запуски с допусками сигнала
По умолчанию сигналы используют 0
для всех значений допуска, таким образом, сравнение возвращает результаты из допуска, когда сигналы не идентичны. Чтобы далее анализировать эффект изменения постоянной времени, задайте значения допуска для сигналов. Можно задать допуски к программируемому сравнению с помощью свойств Simulink.sdi.Signal
объекты в запусках вы выдерживаете сравнение. Сравнение использует допуски, заданные для базового Signal
объект. Этот пример задает комбинацию времени и абсолютных погрешностей.
Задавать допуски, первый доступ Simulink.sdi.Signal
объекты, которые соответствуют каждому сигналу в запусках, которые вы хотите сравнить.
run1 = Simulink.sdi.getRun(runIDTs1); sigID1 = getSignalIDByIndex(run1,1); sigID2 = getSignalIDByIndex(run1,2); sig1 = Simulink.sdi.getSignal(sigID1); sig2 = Simulink.sdi.getSignal(sigID2);
Проверяйте Name
свойство идентифицировать каждый Signal
объект.
sig1.Name
ans = 'q, rad/sec'
sig2.Name
ans = 'alpha, rad'
Задайте абсолютную погрешность 0.1
и допуск времени 0.6
для q
сигнал с помощью AbsTol
и TimeTol
свойства q
предупредите об объекте в базовом запуске.
sig1.AbsTol = 0.1; sig1.TimeTol = 0.6;
Задайте абсолютную погрешность 0.2
и допуск времени 0.8
для alpha
сигнал с помощью AbsTol
и TimeTol
свойства alpha
предупредите об объекте в базовом запуске.
sig2.AbsTol = 0.2; sig2.TimeTol = 0.8;
Сравните запуски снова и получите доступ к результатам.
diffRun2 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); sig1Result2 = getResultByIndex(diffRun2,1); sig2Result2 = getResultByIndex(diffRun2,2);
Проверяйте Status
свойство каждого сигнала определить, находились ли результаты сравнения в пределах заданных допусков.
sig1Result2.Status
ans = WithinTolerance
sig2Result2.Status
ans = WithinTolerance
runIDs
— Матрица Инспектора Данных моделирования запускает идентификаторыМатрица запущенных идентификаторов в Инспекторе Данных моделирования репозиторий.
Simulink.sdi.compareRuns
| Simulink.sdi.copyRun
| Simulink.sdi.copyRunViewSettings
| Simulink.sdi.deleteRun
| Simulink.sdi.exportRun
| Simulink.sdi.getRun
| Simulink.sdi.getRunCount
| Simulink.sdi.isValidRunID
| Simulink.sdi.Run
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.