Сравните данные в двух выполнениях симуляции
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
. Для получения дополнительной информации о том, как Инспектор Данных моделирования выравнивает сигналы для сравнения, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Этот пример показывает, как сравнить выполнения данных моделирования и анализировать результаты сравнения с Инспектором Данных моделирования программируемый интерфейс.
Сгенерируйте выполнения данных моделирования
Моделируйте модель с различными значениями 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') 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
и Инспектора Данных моделирования, чтобы оценить эффект изменения временной константы для фильтра нижних частот после входа управления.
Настройка
Загрузите модель и отметьте 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
и маркировки представляющих интерес сигналов для журналирования.
% 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 sim('slexAircraftExample')
Измените значение Ts
и запустите вторую симуляцию. Затем используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить доступ к идентификаторам выполнения для двух выполнений симуляции.
% Modify the value of model workspace variable Ts modelWorkspace.assignin('Ts',0.2); % Simulate again with the new value of Ts 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'; if resultAtIdx.match fprintf(displayStr,sig1.Name,sig2.Name,'match'); else fprintf(displayStr,sig1.Name,sig2.Name,'do not match'); end end
Signals alpha, rad and alpha, rad do not match Signals Stick and Stick match
runID1
— Базовая линия запускает идентификаторЧисловая идентификация для Baseline, запущенного в сравнении.
runID2
— Сравните с запущенным идентификаторомЧисловая идентификация для Compare to, запущенного в сравнении.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'abstol',x,'align',alignOpts
выравнивание
Опции выравнивания сигналаМассив, задающий алгоритмы выравнивания, чтобы использовать для соединения сигналов от выполнений для сравнения. Инспектор Данных моделирования выравнивает сигналы сначала первым элементом в массиве, затем вторым элементом в массиве, и так далее.
Значение | Выравнивается |
---|---|
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.