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