Сравните данные в двух запусках симуляции
сравнивает данные в запусках, соответствующих diffResult
= Simulink.sdi.compareRuns(runID1
,runID2
)runID1
и runID2
, возврат результата в Simulink.sdi.DiffRunResult
объект, diffResult
.
сравнивает запуски симуляции, соответствующие diffResult
= Simulink.sdi.compareRuns(runID1
,runID2
,Name,Value
)runID1
и runID2
использование опций задано одним или несколькими Name,Value
парные аргументы и возвращают результат сравнения в Simulink.sdi.DiffRunResult
объект, diffResult
. Для получения дополнительной информации о том, как Инспектор Данных моделирования выравнивает сигналы для сравнения, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
То В этом примере показано, как сравнить запуски данных моделирования и анализировать сравнение, заканчивается с Инспектором Данных моделирования программируемый интерфейс.
Сгенерируйте запуски данных моделирования
Симулируйте модель с различным Desired relative slip
значения, чтобы создать запуски данных моделирования, чтобы анализировать с Инспектором Данных моделирования программируемый интерфейс.
% Open model load_system('ex_sldemo_absbrake') % Set the desired slip ratio to 0.24 and simulate set_param('ex_sldemo_absbrake/Desired relative slip','Value','0.24') out_1 = sim('ex_sldemo_absbrake'); % Change the desired slip ratio to 0.25 and simulate set_param('ex_sldemo_absbrake/Desired relative slip','Value','0.25') out_2 = sim('ex_sldemo_absbrake');
Сравните запуски с глобальным допуском
Получите идентификаторы запуска для запусков, которые вы только создали с Simulink.sdi.getAllRunIDs
функция. Затем сравните запуски с помощью глобального относительного допуска и глобального допуска времени, чтобы анализировать, соответствуют ли данные спецификациям.
% Get run IDs for last two runs runIDs = Simulink.sdi.getAllRunIDs; runID1 = runIDs(end - 1); runID2 = runIDs(end); % Compare runs runResult = Simulink.sdi.compareRuns(runID1,runID2,'reltol',0.2,'timetol',0.5);
Создайте график результата сравнения
Используйте Simulink.sdi.DiffRunResult
возразите, что вы создали на предыдущем шаге с Simulink.sdi.compareRuns
получить доступ к данным для Ww
предупредите о результате построить его в фигуре.
% Plot the |Ww| signal difference
signalResult_Ww = getResultByIndex(runResult,1);
figure(1)
plot(signalResult_Ww.Diff)
Можно изменить значения допуска на основе сигнала сигналом, чтобы оценить эффект изменения параметра модели. Этот пример использует slexAircraftExample
модель и Инспектор Данных моделирования, чтобы оценить эффект изменения постоянной времени для фильтра lowpass после входа управления.
Настройка
Загрузите модель и отметьте q, rad/sec
и alpha, rad
сигналы для логгирования. Затем симулируйте модель, чтобы создать базовый запуск.
% Load example model load_system('slexAircraftExample') % Mark the q, rad/sec and alpha, rad signals for logging Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on') % Simulate system out_1 = sim('slexAircraftExample');
Измените параметр модели
Измените параметр модели Ts
в рабочем пространстве модели, чтобы изменить постоянную времени входа фильтр lowpass.
% Change input filter time constant modelWorkspace = get_param('slexAircraftExample','modelworkspace'); assignin(modelWorkspace,'Ts',1) % Simulate again out_2 = sim('slexAircraftExample');
Сравните запуски и смотрите результаты
Используйте Simulink.sdi.compareRuns
функция, чтобы сравнить данные из симуляций. Затем смотрите match
свойство результата сигнала видеть, находились ли сигналы в пределах допуска по умолчанию 0.
% Get run data runIDs = Simulink.sdi.getAllRunIDs; runID1 = runIDs(end - 1); runID2 = runIDs(end); % Compare runs diffRun1 = Simulink.sdi.compareRuns(runID1,runID2); % Get signal result sig1Result1 = getResultByIndex(diffRun1,1); sig2Result1 = getResultByIndex(diffRun1,2); % Check whether signals matched sig1Result1.Status
ans = OutOfTolerance
sig2Result1.Status
ans = OutOfTolerance
Сравните запуски с допусками сигнала
Сигналы не соответствовали в допуске по умолчанию 0. Чтобы далее анализировать эффект изменения постоянной времени, добавьте допуски сигнала в сравнение с базовыми свойствами сигнала определить допуск, требуемый для передачи. Этот пример использует комбинацию времени и абсолютных допусков.
% Get signal object for sigID1 run1 = Simulink.sdi.getRun(runID1); sigID1 = getSignalIDByIndex(run1,1); sigID2 = getSignalIDByIndex(run1,2); sig1 = Simulink.sdi.getSignal(sigID1); sig2 = Simulink.sdi.getSignal(sigID2); % Set tolerances for q, rad/sec sig1.AbsTol = 0.1; sig1.TimeTol = 0.6; % Set tolerances for alpha, rad sig2.AbsTol = 0.2; sig2.TimeTol = 0.8; % Run the comparison again diffRun2 = Simulink.sdi.compareRuns(runID1,runID2); sig1Result2 = getResultByIndex(diffRun2,1); sig2Result2 = getResultByIndex(diffRun2,2); % Check the result sig1Result2.Status
ans = WithinTolerance
sig2Result2.Status
ans = WithinTolerance
В этом примере показано, как сравнить запуски с помощью желаемых критериев выравнивания сигналов между запусками.
Сгенерируйте данные моделирования, чтобы выдержать сравнение
Запустите путем загрузки slexAircraftExample
система и отмечающие представляющие интерес сигналы для логгирования.
% Load the model slexAircraftExample load_system('slexAircraftExample') % Mark signals for logging Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',... 4,'on')
Этот пример запускает две симуляции slexAircraftExample
модель с различными значениями переменной Ts
. Используйте get_param
получить доступ к рабочему пространству модели для slexAircraftExample
модель. Затем присвойте значение для переменной и запустите первую симуляцию.
% Get the model workspace and set the value of variable Ts modelWorkspace = get_param('slexAircraftExample','modelworkspace'); modelWorkspace.assignin('Ts',0.1); % Configure model "slexAircraftExample" for logging and simulate out_1 = sim('slexAircraftExample');
Измените значение Ts
и запустите вторую симуляцию. Затем используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить доступ к идентификаторам запуска для двух запусков симуляции.
% Modify the value of model workspace variable Ts modelWorkspace.assignin('Ts',0.2); % Simulate again with the new value of Ts out_2 = sim('slexAircraftExample'); % Get run IDs for simulations runIDs = Simulink.sdi.getAllRunIDs; runID1 = runIDs(end-1); runID2 = runIDs(end);
Задайте критерии выравнивания сравнения
Прежде, чем запустить сравнение, задайте, как вы хотите, чтобы Инспектор Данных моделирования выровнял сигналы между запусками. Этот пример выравнивает сигналы их именем, затем их блоком path, и затем их идентификатором Simulink.
% Define the alignment criteria for the comparison to align signals by % name, then by block path, then by SID alignMethods = [Simulink.sdi.AlignType.SignalName Simulink.sdi.AlignType.BlockPath Simulink.sdi.AlignType.SID];
Сравните запуски с заданными критериями выравнивания
Сравните данные моделирования в своих двух запусках, с помощью критериев выравнивания, которые вы задали. Сравнение использует маленький допуск времени, чтобы составлять эффект различий в размере шага, используемом решателем на переходе входа прямоугольной волны.
% Compare the runs diffResults = Simulink.sdi.compareRuns(runID1,runID2,'align',alignMethods,... 'timetol',0.005);
Проверяйте результаты сравнения на выровненные сигналы
Можно использовать getResultByIndex
метод, чтобы получить доступ к сравнению приводит для выровненных сигналов к запускам, которые вы сравнили.
% Check the number of comparisons in the result numComparisons = diffResults.count; % Display result for each signal in command window for k = 1:numComparisons resultAtIdx = diffResults.getResultByIndex(k); % Get signal IDs for each comparison result sigID1 = resultAtIdx.signalID1; sigID2 = resultAtIdx.signalID2; sig1 = Simulink.sdi.getSignal(sigID1); sig2 = Simulink.sdi.getSignal(sigID2); % Display whether signals match displayStr = 'Signals %s and %s: %s \n'; fprintf(displayStr,sig1.Name,sig2.Name,resultAtIdx.Status); end
Signals alpha, rad and alpha, rad: OutOfTolerance Signals Stick and Stick: WithinTolerance
runID1
— Базовая линия запускает идентификаторЧисловая идентификация для Baseline, запущенного в сравнении.
runID2
— Сравните с запущенным идентификаторомЧисловая идентификация для Compare to, запущенного в сравнении.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'abstol',x,'align',alignOpts
'align'
— Опции выравнивания сигналаМассив, задающий алгоритмы выравнивания, чтобы использовать в соединении сигналов от запусков для сравнения. Инспектор Данных моделирования выравнивает сигналы сначала первым элементом в массиве, затем вторым элементом в массиве, и так далее.
Значение | Выравнивается |
---|---|
Simulink.sdi.AlignType.BlockPath | Путь к исходному блоку сигнала |
Simulink.sdi.AlignType.SID | Идентификатор Simulink® Определяет местоположение Компонентов Схемы Используя Идентификаторы Simulink |
Simulink.sdi.AlignType.SignalName | Имя сигнала |
Simulink.sdi.AlignType.DataSource | Путь переменной в рабочей области MATLAB® |
Пример: [Simulink.sdi.AlignType.SignalName,Simulink.sdi.AlignType.SID]
задает выравнивание сигнала по наименованию и затем SID.
'abstol'
— Абсолютный допуск к сравнениюГлобальный абсолютный допуск с положительным знаком используется во всех сигналах в сравнении запуска. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.5
Типы данных: double
'reltol'
— Относительный допуск к сравнениюГлобальный относительный допуск с положительным знаком используется во всех сигналах в сравнении запуска. Относительный допуск выражается как дробный множитель. Например, 0.1
задает 10-процентный допуск. Для получения дополнительной информации о том, как относительный допуск применяется в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Типы данных: double
'timetol'
— Допуск времени к сравнениюГлобальный допуск времени с положительным знаком используется во всех сигналах в сравнении запуска. Задайте допуск времени с модулями секунд. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.2
Типы данных: double
diffResult
— Результаты сравненияSimulink.sdi.DiffRunResult
объект, который обеспечивает доступ к результатам сравнения.
Simulink.sdi.DiffRunResult
| Simulink.sdi.DiffRunResult.getResultByIndex
| Simulink.sdi.DiffSignalResult
| Simulink.sdi.compareSignals
| Simulink.sdi.getRunCount
| Simulink.sdi.getRunIDByIndex
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.