Можно использовать возможности Инспектора Данных моделирования из MATLAB® командная строка с помощью Инспектора Данных моделирования API.
Инспектор Данных моделирования организует данные в запусках и сигналах, присваивая уникальную числовую идентификацию каждому запуску и сигналу. Некоторый Инспектор Данных моделирования API-функции использует запуск и идентификаторы сигнала к справочным данным, вместо того, чтобы принять запуск или сам сигнал как вход. Чтобы получить доступ к идентификаторам запуска в рабочей области, можно использовать Simulink.sdi.getAllRunIDs
или Simulink.sdi.getRunIDByIndex
. Можно получить доступ к идентификаторам сигнала через Simulink.sdi.Run
объект с помощью getSignalIDByIndex
метод.
Simulink.sdi.Run
и Simulink.sdi.Signal
классы обеспечивают доступ к вашим данным и позволяют вам просматривать и изменять запуск и метаданные сигнала. Можно изменить Инспектора Данных моделирования настройки с помощью функций как Simulink.sdi.setSubPlotLayout
, Simulink.sdi.setRunNamingRule
, и Simulink.sdi.setMarkersOn
. Чтобы восстановить настройки по умолчанию Инспектора Данных моделирования, использовать Simulink.sdi.clearPreferences
.
В этом примере показано, как создать запуск, добавьте данные в него, и затем просмотрите данные в Инспекторе Данных моделирования.
Создайте данные для запуска
Создайте timeseries
объекты содержать данные для синуса сигнализируют и сигнал косинуса. Дайте каждый timeseries
возразите описательному имени.
time = linspace(0,20,100); sine_vals = sin(2*pi/5*time); sine_ts = timeseries(sine_vals,time); sine_ts.Name = 'Sine, T=5'; cos_vals = cos(2*pi/8*time); cos_ts = timeseries(cos_vals,time); cos_ts.Name = 'Cosine, T=8';
Создайте запуск и добавьте данные
Используйте Simulink.sdi.view
функционируйте, чтобы открыть Инспектора Данных моделирования.
Simulink.sdi.view
Чтобы импортировать данные в Инспектора Данных моделирования из рабочей области, создайте Simulink.sdi.Run
объект с помощью Simulink.sdi.Run.create
функция. Добавьте информацию о запуске к его метаданным с помощью Name
и Description
свойства Run
объект.
sinusoidsRun = Simulink.sdi.Run.create; sinusoidsRun.Name = 'Sinusoids'; sinusoidsRun.Description = 'Sine and cosine signals with different frequencies';
Используйте add
функция, чтобы добавить данные вы создали в рабочей области к пустому запуску.
add(sinusoidsRun,'vars',sine_ts,cos_ts);
Отобразите данные на графике в инспекторе данных моделирования
Используйте getSignalByIndex
функционируйте, чтобы получить доступ к Simulink.sdi.Signal
объекты, которые содержат данные сигнала. Можно использовать Simulink.sdi.Signal
свойства объектов, чтобы задать стиль линии и цвет для сигнала и построить его в Инспекторе Данных моделирования. Задайте LineColor
и LineDashed
свойства для каждого сигнала.
sine_sig = getSignalByIndex(sinusoidsRun,1); sine_sig.LineColor = [0 0 1]; sine_sig.LineDashed = '-.'; cos_sig = sinusoidsRun.getSignalByIndex(2); cos_sig.LineColor = [0 1 0]; cos_sig.LineDashed = '--';
Используйте Simulink.sdi.setSubPlotLayout
функция, чтобы сконфигурировать 2
- 1
размещение подграфика в Инспекторе Данных моделирования область графического вывода. Затем используйте plotOnSubplot
функционируйте, чтобы построить сигнал синуса на главном подграфике и сигнал косинуса на более низком подграфике.
Simulink.sdi.setSubPlotLayout(2,1); plotOnSubPlot(sine_sig,1,1,true); plotOnSubPlot(cos_sig,2,1,true);
Закройте инспектора данных моделирования и сохраните свои данные
Когда вы закончили смотреть нанесенные на график данные сигнала, можно закрыть Инспектора Данных моделирования и сохранить сеанс в файл MLDATX.
Simulink.sdi.close('sinusoids.mldatx')
Можно использовать Инспектора Данных моделирования программируемый интерфейс, чтобы сравнить сигналы в рамках одного запуска. Этот пример сравнивает сигналы ввода и вывода самолета продольный контроллер.
Во-первых, загрузите сеанс, который содержит данные.
Simulink.sdi.load('AircraftExample.mldatx');
Используйте Simulink.sdi.Run.getLatest
функционируйте, чтобы получить доступ к последнему запуску в данных.
aircraftRun = Simulink.sdi.Run.getLatest;
Затем можно использовать Simulink.sdi.getSignalsByName
функционируйте, чтобы получить доступ к Stick
сигнал, который представляет вход контроллеру и alpha, rad
сигнал, который представляет выход.
stick = getSignalsByName(aircraftRun,'Stick'); alpha = getSignalsByName(aircraftRun,'alpha, rad');
Прежде чем вы сравните сигналы, можно задать значение допуска, чтобы использовать для сравнения. Сравнения используют значения допуска, заданные для базового сигнала в сравнении, таким образом установите значение абсолютной погрешности 0.1
на Stick
сигнал.
stick.AbsTol = 0.1;
Теперь сравните сигналы с помощью Simulink.sdi.compareSignals
функция. Stick
сигнал является базовой линией и alpha, rad
сигнал является сигналом выдержать сравнение с базовой линией.
comparisonResults = Simulink.sdi.compareSignals(stick.ID,alpha.ID); match = comparisonResults.Status
match = ComparisonSignalStatus enumeration OutOfTolerance
Результат сравнения вне допуска. Можно использовать Simulink.sdi.view
функционируйте, чтобы открыть Инспектора Данных моделирования, чтобы просмотреть и анализировать результаты сравнения.
Можно задать глобальные значения допуска, чтобы использовать при сравнении двух запусков симуляции. Глобальные значения допуска применяются ко всем сигналам в рамках запуска. В этом примере показано, как задать глобальные значения допуска для сравнения запуска и как анализировать и сохранить результаты сравнения.
Во-первых, загрузите файл сеанса, который содержит данные, чтобы выдержать сравнение. Файл сеанса содержит данные для четырех симуляций самолета продольный контроллер. Этот пример сравнивает данные из двух запусков, которые используют различные входные постоянные времени фильтра.
Simulink.sdi.load('AircraftExample.mldatx');
Чтобы получить доступ к данным о запуске, чтобы выдержать сравнение, используйте Simulink.sdi.getAllRunIDs
функция, чтобы получить идентификаторы запуска, которые соответствуют последним двум запускам симуляции.
runIDs = Simulink.sdi.getAllRunIDs; runID1 = runIDs(end - 1); runID2 = runIDs(end);
Используйте Simulink.sdi.compareRuns
функция, чтобы сравнить запуски. Задайте глобальное значение относительной погрешности 0.2
и глобальное значение допуска времени 0.5
.
runResult = Simulink.sdi.compareRuns(runID1,runID2,'reltol',0.2,'timetol',0.5);
Проверяйте Summary
свойство возвращенного Simulink.sdi.DiffRunResult
объект видеть, были ли сигналы в значениях допуска или из допуска.
runResult.Summary
ans = struct with fields:
OutOfTolerance: 0
WithinTolerance: 3
Unaligned: 0
UnitsMismatch: 0
Empty: 0
Canceled: 0
EmptySynced: 0
DataTypeMismatch: 0
TimeMismatch: 0
StartStopMismatch: 0
Unsupported: 0
Все три результата сравнения сигнала находились в пределах заданного глобального допуска.
Можно сохранить результаты сравнения в файл MLDATX с помощью saveResult
функция.
saveResult(runResult,'InputFilterComparison');
Можно программно задать значения допуска сигнала, чтобы использовать в сравнениях, выполняемых с помощью Инспектора Данных моделирования. В этом примере вы сравниваете данные, собранные путем симуляции модели самолета продольная система управления полетом. Каждая симуляция использует различное значение для входной постоянной времени фильтра и регистрирует сигналы ввода и вывода. Вы анализируете эффект изменения постоянной времени путем сравнения результатов с помощью Инспектора Данных моделирования и допусков сигнала.
Во-первых, загрузите файл сеанса, который содержит данные моделирования.
Simulink.sdi.load('AircraftExample.mldatx');
Файл сеанса содержит четыре запуска. В этом примере вы сравниваете данные из первых двух запусков в файле. Доступ к Simulink.sdi.Run
объекты для первых двух запусков загружены из файла.
runIDs = Simulink.sdi.getAllRunIDs; runIDTs1 = runIDs(end-3); runIDTs2 = runIDs(end-2);
Теперь сравните два запуска, не задавая допусков.
noTolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2);
Используйте getResultByIndex
функционируйте, чтобы получить доступ к результатам сравнения для q
и alpha
сигналы.
qResult = getResultByIndex(noTolDiffResult,1); alphaResult = getResultByIndex(noTolDiffResult,2);
Проверяйте Status
из каждого результата сигнала видеть, находился ли результат сравнения в пределах нашего из допуска.
qResult.Status
ans = ComparisonSignalStatus enumeration OutOfTolerance
alphaResult.Status
ans = ComparisonSignalStatus enumeration OutOfTolerance
Сравнение использовало значение 0
для всех допусков, таким образом, OutOfTolerance
закончитесь означает, что сигналы не идентичны.
Можно далее анализировать эффект постоянной времени путем определения значений допуска для сигналов. Задайте допуски путем установки свойств для Simulink.sdi.Signal
объекты, которые соответствуют сравниваемым сигналам. Сравнения используют допуски, заданные для базовых сигналов. Этот пример задает допуск времени и абсолютную погрешность.
Задавать допуск, первый доступ Signal
объекты от базового запуска.
runTs1 = Simulink.sdi.getRun(runIDTs1); qSig = getSignalsByName(runTs1,'q, rad/sec'); alphaSig = getSignalsByName(runTs1,'alpha, rad');
Задайте абсолютную погрешность 0.1
и допуск времени 0.6
для q
сигнал с помощью AbsTol
и TimeTol
свойства.
qSig.AbsTol = 0.1; qSig.TimeTol = 0.6;
Задайте абсолютную погрешность 0.2
и допуск времени 0.8
для alpha
сигнал.
alphaSig.AbsTol = 0.2; alphaSig.TimeTol = 0.8;
Сравните результаты снова. Доступ к результатам сравнения и проверки Status
свойство для каждого сигнала.
tolDiffResult = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); qResult2 = getResultByIndex(tolDiffResult,1); alphaResult2 = getResultByIndex(tolDiffResult,2); qResult2.Status
ans = ComparisonSignalStatus enumeration WithinTolerance
alphaResult2.Status
ans = ComparisonSignalStatus enumeration WithinTolerance
Инспектор данных моделирования