Сравните данные в двух выполнениях моделирования
diffResult = Simulink.sdi.compareRuns(runID1,runID2)
diffResult = Simulink.sdi.compareRuns(runID1,runID2,Name,Value)
сравнивает данные в выполнениях, соответствующих 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
. Для получения дополнительной информации о том, как Моделирование Data Inspector выравнивает сигналы для сравнения, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Этот пример показывает, как сравнить выполнения данных моделирования и анализировать результаты сравнения с Моделированием Data Inspector программируемый интерфейс.
Сгенерируйте выполнения данных моделирования
Моделируйте модель с различными значениями Desired relative slip
, чтобы создать выполнения данных моделирования, чтобы анализировать с Моделированием Data Inspector программируемый интерфейс.
% 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') 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') 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 = runResult.getResultByIndex(1);
figure(1)
plot(signalResult_Ww.Diff)
Можно изменить значения допуска на основе сигнала сигналом, чтобы оценить эффект изменения параметра модели. Этот пример использует модель slexAircraftExample
и Моделирование Data Inspector, чтобы оценить эффект изменения временной константы для фильтра нижних частот после входного параметра управления.
Настройка
Загрузите модель и отметьте 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 sim('slexAircraftExample')
Измените параметр модели
Измените параметр модели Ts
в рабочем пространстве модели, чтобы изменить временную константу входного фильтра нижних частот.
% Change input filter time constant modelWorkspace = get_param('slexAircraftExample','modelworkspace'); modelWorkspace.assignin('Ts',1) % Simulate again 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 = diffRun1.getResultByIndex(1); sig2Result1 = diffRun1.getResultByIndex(2); % Check whether signals matched sig1Result1.Match
ans = logical
0
sig2Result1.Match
ans = logical
0
Сравните выполнения с допусками сигнала
Сигналы не соответствовали в допуске по умолчанию 0. Чтобы далее анализировать эффект изменения временной константы, добавьте допуски сигнала к сравнению с базовыми свойствами сигнала определить допуск, требуемый для передачи. Этот пример использует комбинацию времени и абсолютных допусков.
% Get signal object for sigID1 run1 = Simulink.sdi.getRun(runID1); sigID1 = run1.getSignalIDByIndex(1); sigID2 = run1.getSignalIDByIndex(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 = diffRun2.getResultByIndex(1); sig2Result2 = diffRun2.getResultByIndex(2); % Check the result sig1Result2.Match
ans = logical
1
sig2Result2.Match
ans = logical
1
Этот пример показывает, как сравнить выполнения с помощью желаемых критериев выравнивания сигналов между выполнениями.
Сгенерируйте выполнения, чтобы выдержать сравнение
Этот пример моделирует модель slexAircraftExample
с двумя различными значениями Ts
, чтобы сгенерировать два выполнения моделирования для сравнения.
% Configure model "slexAircraftExample" for logging and simulate simOut = sim('slexAircraftExample', 'SaveOutput', 'on', 'SaveFormat', ... 'Dataset', 'ReturnWorkspaceOutputs', 'on'); % Create a run from the simulation output runID1 = Simulink.sdi.createRun('My Run', 'namevalue', {'simOut'}, ... {simOut}); % Get workspace and change workspace variable Ts modelWorkspace = get_param('slexAircraftExample', 'modelworkspace'); modelWorkspace.assignin('Ts', 0.2); % Simulate again simOut = sim('slexAircraftExample', 'SaveOutput', 'on', 'SaveFormat', ... 'Dataset', 'ReturnWorkspaceOutputs', 'on'); % Create another run and get signal IDs runID2 = Simulink.sdi.createRun('New Run', 'namevalue', {'simOut'}, ... {simOut});
Задайте критерии выравнивания сравнения
Прежде, чем запустить сравнение, задайте, как вы хотите, чтобы Моделирование Data Inspector выровняло сигналы между выполнениями. Этот пример выравнивает сигналы их именем, затем их блоком 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, alignMethods);
Проверьте результаты сравнения на выровненные сигналы
Можно использовать метод getResultByIndex
, чтобы получить доступ к выровненным сигналам и результатам сравнения для каждого сигнала в выполнениях, которые вы сравнили.
% Check the number of comparisons in the result numComparisons = diffResults.count; % Iterate through each element and display results 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 with IDs %s and %s %s \n'; if resultAtIdx.match fprintf(displayStr, sig1.Name, sig2.Name, 'match'); else fprintf(displayStr, sig1.Name, sig2.Name, 'do not match'); end end
Signals with IDs Actuator Model and Actuator Model do not match Signals with IDs Integrate qdot and Integrate qdot do not match Signals with IDs Integrate and Integrate do not match Signals with IDs Alpha-sensor Low-pass Filter and Alpha-sensor Low-pass Filter do not match Signals with IDs Pitch Rate Lead Filter and Pitch Rate Lead Filter do not match Signals with IDs Proportional plus integral compensator and Proportional plus integral compensator do not match Signals with IDs Stick Prefilter and Stick Prefilter do not match Signals with IDs Q-gust model and Q-gust model do not match Signals with IDs W-gust model(1) and W-gust model(1) do not match Signals with IDs W-gust model(2) and W-gust model(2) do not match Signals with IDs alpha, rad and alpha, rad do not match
runID1
— Базовая линия запускает идентификаторЧисловая идентификация для Базового выполнения в сравнении.
runID2
— Сравните с запущенным идентификаторомЧисловая идентификация для Сравнивания, чтобы запуститься в сравнении.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Имя
должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'abstol', x, 'выравниваются', alignOpts
выравнивание
Опции выравнивания сигналаМассив, задающий алгоритмы выравнивания, чтобы использовать для соединения сигналов от выполнений для сравнения. Моделирование Data Inspector выравнивает сигналы сначала первым элементом в массиве, затем вторым элементом в массиве, и так далее.
Значение | Выравнивается |
---|---|
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'
Абсолютный допуск к сравнениюГлобальный абсолютный допуск с положительным знаком используется для всех сигналов в сравнении выполнения. Для получения дополнительной информации о допусках в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 0.5
Типы данных: double
'RelTol'
Относительный допуск к сравнениюГлобальный относительный допуск с положительным знаком используется для всех сигналов в сравнении выполнения. Относительный допуск выражается как дробный множитель. Например, 0.1
задает 10-процентный допуск. Для получения дополнительной информации о том, как относительный допуск применяется в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 0.1
Типы данных: double
'timetol'
— Допуск времени к сравнениюГлобальный допуск времени с положительным знаком используется для всех сигналов в сравнении выполнения. Задайте допуск времени с модулями секунд. Для получения дополнительной информации о допусках в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.