Пакет: Simulink.sdi
Доступ к данным сигнала и метаданным
Simulink.sdi.Signal
объект обеспечивает доступ к данным сигнала и метаданным. Метаданные включают свойства для визуализации и сравнения сигналов.
возвращает signal
= Simulink.sdi.getSignal(signalID
)Simulink.sdi.Signal
объект, соответствующий signalID
.
возвращает signal
= runObj.getSignal(signalID
)Simulink.sdi.Signal
объект, соответствующий signalID
.
возвращает signal
= runObj.getSignalByIndex(index
)Simulink.sdi.Signal
объект, соответствующий signalID
в индексе, заданном index
в Run
объект runObj
.
signalID
— Идентификатор сигналаЧисловой идентификатор сигнала для сигнала сгенерирован Инспектором Данных моделирования. Можно получить ID сигнала для использования сигнала методы Simulink.sdi.Run
объект или использование Simulink.sdi.getSignal
функция.
index
— Индекс сигнала в рамках запускаИндекс сигнала в рамках запуска.
Пример 1
ID
— Идентификатор сигналаУникальный номер, идентифицирующий сигнал. Инспектор Данных моделирования присваивает уникальный числовой ID каждому запуску и сигналу.
RunID
— Запустите идентификаторЗапустите идентификатор для запуска, который содержит сигнал. Инспектор Данных моделирования присваивает уникальный числовой ID каждому запуску и сигналу. Можно получить доступ к ID запуска для сигнала с помощью Simulink.sdi.getAllRunIDs
функция.
Name
— Имя сигналаИмя сигнала.
Пример: 'fuel'
Description
— Описание сигнала''
(значение по умолчанию) | символьный массив | строкаОписание сигнала, заданного как символьный массив или строка. Можно использовать Description
свойство аннотировать сигнал или идентифицировать содержимое сигнала вне Name
. Когда вы регистрируете данные Simscape™ Инспектору Данных моделирования, Description
свойство заполняется автоматически для каждого узла.
Units
— Модули измерения сигналаЕдиницы измерения сигнала.
Пример: 'g/s'
Data Type
— Тип данных для данных сигналаТип данных данных сигнала.
Пример: 'double'
Complexity
— Сложность данных сигналаЗадает, являются ли данные сигнала действительными или комплексными.
Пример: 'real'
SampleTime
— Шаг расчета сигналаШаг расчета сигнала. Значение 'Continuous'
указывает на симуляцию переменного шага.
Пример: 'Continuous'
Пример: 0.1
Model
— Имя модели, которая произвела сигналИмя модели, которая произвела сигнал.
Пример: 'sldemo_fuelsys'
BlockPath
— Путь блока, который задает сигналПуть к блоку, который произвел сигнал.
Пример: 'sldemo_fuelsys/Engine Gas Dynamics'
FullBlockPath
— Путь блока, который задает сигналПуть к блоку, который генерирует сигнал включая полную иерархию модели. Для сигналов в эталонных моделях, FullBlockPath
массив ячеек, содержащий полный путь. Для других сигналов, FullBlockPath
идентично BlockPath
.
Пример: 'sldemo_fuelsys/Engine Gas Dynamics/Mixing & Combustion/MinMax'
PortIndex
— Блокируйте индекс портаИндекс выходного порта, который задает сигнал.
Пример 1
Dimensions
— Размерности матрицы, содержащей сигналРазмерности матрицы, которая содержит сигнал.
Пример 1
Channel
— Индекс сигнала в матрицеИндексы сигнала для сигналов, которые являются частью вектора или матрицы.
Values
— Значения сигналовtimeseries
Временные стоимости и значения данных для сигнала. Для шин, Values
структура.
RootSource
— Высокоуровневая структура логгирования, содержащая сигнал, импортируется из рабочей областиИмя высокоуровневой структуры логгирования, содержащей сигнал, для сигналов, импортируется из рабочего пространства MATLAB.
TimeSource
— Источник данных времени сигнала импортируется из рабочей областиИмя переменной, содержащей данные времени сигнала для сигналов, импортируется из рабочего пространства MATLAB.
DataSource
— Источник данных импортируется из рабочей областиИмя массива, содержащего данные сигнала для сигналов, импортируется из рабочего пространства MATLAB.
ComplexFormat
— Формат отображения для комплексных сигналов"real-imaginary"
| "magnitude"
| "magnitude-phase"
| "phase"
Сложный формат, задающий, как отобразить комплексные данные сигнала в Инспекторе Данных моделирования.
"real-imaginary"
— Действительные и мнимые компоненты отображения сигнала вместе, когда вы строите сигнал. Мнимый компонент сигнала построен с различным оттенком Line Color.
"magnitude"
— Величина сигнала отображается, когда вы строите сигнал.
"magnitude-phase"
— Величина и фаза отображения сигнала вместе, когда вы строите сигнал.
"phase"
— Фаза сигнала отображается, когда вы строите сигнал. Фаза построена с различным оттенком Line Color.
Типы данных: char |
string
Checked
— Индикатор Plottingfalse
(значение по умолчанию) | true
Логическое значение, указывающее, построен ли сигнал на каком-либо подграфике. Установка Checked
к false
очищает сигнал от всех подграфиков. Установка Checked
к true
строит сигнал на активном подграфике.
Типы данных: логический
LineColor
— Цвет сигнальной линии
- 3
векторЦвет сигнала в графиках, заданных как 1 3 вектор RGB.
Пример: [0 114 189]
Типы данных: double
LineDashed
— Стиль сигнальной линии'-'
| '--'
| ':'
| '-.'
Стиль сигнальной линии.
'-'
задает стиль сплошной линии.
'--'
задает стиль пунктирной линии.
':'
задает стиль точечной линии.
'-.'
задает стиль штрихпунктирной линии.
InterpMethod
метод интерполяции'linear'
(значение по умолчанию) | 'zoh'
| 'none'
Метод интерполяции используется в визуализации данных и синхронизации. 'zoh'
указывает, что нулевой порядок содержит интерполяцию, 'linear'
задает линейную интерполяцию и 'none'
не задает интерполяции. Для получения дополнительной информации об опциях интерполяции, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
AbsTol
— Абсолютный допуск
(значение по умолчанию) | дваждыАбсолютный допуск с положительным знаком сигнала используется в сравнениях сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes
. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Типы данных: double
RelTol
— Относительный допуск
(значение по умолчанию) | дваждыОтносительный допуск с положительным знаком к сигналу используется в сравнениях сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes
. Относительный допуск выражается как дробный множитель. Например, 0.1
задает 10-процентный допуск. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.05
Типы данных: double
TimeTol
— Допуск времени
(значение по умолчанию) | дваждыДопуск времени с положительным знаком к сигналу используется в сравнениях сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes
. Задайте допуск времени в секундах. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Типы данных: double
SyncMethod
— Метод синхронизации'union'
(значение по умолчанию) | 'intersection'
Метод раньше синхронизировал данные времени сигнала для сравнения. Для получения дополнительной информации об опциях синхронизации, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
convertUnits | Преобразуйте единицы сигнала |
экспорт | Экспортируйте объект сигнала в timeseries MATLAB |
getAsTall | Возвратите длинное расписание с временными стоимостями и значениями данных |
plotOnSubPlot | Сигнал графика на заданном подграфике |
Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Можно изменить значения допуска на основе сигнала сигналом, чтобы оценить эффект изменения параметра модели. Этот пример использует 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
В этом примере показано, как получить Simulink.sdi.Signal
возразите и измените его свойства с помощью Инспектора Данных моделирования программируемый интерфейс.
Получите Simulink.sdi.Signal
Объект
Во-первых, запустите симуляцию, чтобы создать запуск. Этот пример использует модель slexAircraftExample
в качестве примера. Затем используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить
Simulink.sdi.Signal
возразите для своего сигнала интереса.
% Configure model "slexAircraftExample" for logging and simulate simOut = sim('slexAircraftExample','SaveOutput','on',... 'SaveFormat','StructureWithTime'); % Use Simulink.sdi.createRun to create a run and return the list of signal IDs for signals % contained in the run [~,~,signalIDs] = Simulink.sdi.createRun('My Run','base',{'simOut'}); % Get the signal object corresponding to the first signal ID signalObj = Simulink.sdi.getSignal(signalIDs(1));
Измените свойства сигнала
Simulink.sdi.Signal
объект имеет несколько сравнений и свойств визуализации, которые можно изменить.
% Define comparison and visualization properties for this signal signalObj.syncMethod = 'intersection'; signalObj.lineColor = [1,0.4,0.6]; signalObj.lineDashed = '-'; signalObj.checked = true;
Просмотрите свойства сигнала
Можно просмотреть свойства сигнала в командном окне и в Инспекторе Данных моделирования, чтобы проверить, что сигналу задали его свойства, как вы хотите их.
signalObj
signalObj = Signal with properties: ID: 18481 RunID: 18467 Name: 'Integrate:CSTATE' Description: "" Units: '' DataType: 'double' Complexity: "real" ComplexFormat: "real-imaginary" SampleTime: '' Model: 'slexAircraftExample' BlockPath: 'slexAircraftExample/Aircraft Dynamics Model/Vertical Channel/Integrate' FullBlockPath: 'slexAircraftExample/Aircraft Dynamics Model/Vertical Channel/Integrate' PortIndex: 0 Dimensions: 1 Channel: [1x0 int32] Checked: 1 LineColor: [1 0.4000 0.6000] LineDashed: '-' InterpMethod: 'linear' AbsTol: 0 RelTol: 0 TimeTol: 0 SyncMethod: 'intersection' Values: [1x1 timeseries] RootSource: 'simOut.get('xout')' TimeSource: 'simOut.get('xout').time' DataSource: 'simOut.get('xout').signals(1).values'
Simulink.sdi.view
Этот пример использует slexAircraftExample
модель, чтобы продемонстрировать сравнение ввода и вывода сигнализирует для системы управления. Пример отмечает сигналы для потоковой передачи, затем получает объект запуска для запущенной симуляции. Идентификаторы сигнала от объекта запуска задают сигналы, которые будут сравнены.
% Load model slexAircraftExample and mark signals for streaming load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on') % Simulate model slexAircraftExample out = sim('slexAircraftExample'); % Get run IDs for most recent run allIDs = Simulink.sdi.getAllRunIDs; runID = allIDs(end); % Get Run object aircraftRun = Simulink.sdi.getRun(runID); % Get signal IDs signalID1 = getSignalIDByIndex(aircraftRun,1); signalID2 = getSignalIDByIndex(aircraftRun,2); if (isValidSignalID(aircraftRun,signalID1)) % Change signal tolerance signal1 = Simulink.sdi.getSignal(signalID1); signal1.AbsTol = 0.1; end if (isValidSignalID(aircraftRun,signalID1) && isValidSignalID(aircraftRun,signalID2)) % Compare signals sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2); % Check whether signal result status match = sigDiff.Status end
match = OutOfTolerance
Этот пример демонстрирует, как получить доступ к Simulink.sdi.Run
объект для Инспектора Данных моделирования, запущенного созданный путем логгирования сигналов. От Simulink.sdi.Run
объект можно получить Simulink.sdi.Signal
объекты, которые можно использовать, чтобы отобразить данные на графике.
Создайте запущенную симуляцию и доступ к Run
Объект
sldemo_fuelsys
модель включает несколько сигналов, которые отмечены для логгирования. Чтобы создать симуляцию, запущенную содержащий записанные данные, симулируйте модель.
sim('ex_vdp');
Инспектор Данных моделирования отслеживает запуски путем присвоения каждого запуска, созданного симуляцией, импортирования данных или открытия сеанса уникальный числовой ID. Чтобы получить доступ к объекту запуска для симуляции, только выполненной, используйте Simulink.sdi.getAllRunIDs
функционируйте и возьмите последний ID запуска в возвращенном векторе.
runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end);
Если у вас есть ID запуска для запуска интереса, можно использовать Simulink.sdi.getRun
функция, чтобы получить Simulink.sdi.Run
объект, соответствующий запуску. Можно использовать Run
возразите, чтобы проверять метаданные, сопоставленные с запуском, включая количество сигналов в запуске.
vdpRun = Simulink.sdi.getRun(runID); vdpRun.SignalCount
ans = int32
2
Отобразите данные на графике Используя Signal
Объекты
Используйте getSignalByIndex
функционируйте, чтобы получить доступ к сигналам интереса от Run
объект, fuelRun
.
signal1 = getSignalByIndex(vdpRun,1); signal2 = getSignalByIndex(vdpRun,2);
Используйте Simulink.sdi.setSubPlotLayout
функция, чтобы задать размещение 3 на 1.
Simulink.sdi.setSubPlotLayout(2,1)
Прежде, чем отобразить данные на графике, используйте Simulink.sdi.clearAllSubPlots
функционируйте, чтобы очистить любые данные, которые уже отображены на графике.
Simulink.sdi.clearAllSubPlots
Постройте один сигнал на каждом подграфике. Чтобы построить сигналы на первом подграфике, можно установить checked
свойство для сигнала. Чтобы построить сигналы на подграфиках кроме первого подграфика, используйте plotOnSubPlot
функция.
signal1.Checked = true; plotOnSubPlot(signal2,2,1,true);
Просмотрите отображенные на графике данные
Чтобы просмотреть графики, вы только создали, откройте Инспектора Данных моделирования, использующего Simulink.sdi.view
функция.
Используйте Инспектора Данных моделирования пользовательский интерфейс, чтобы просмотреть и изменить сигналы и свойства сигнала.
Simulink.sdi.DatasetRef.getSignal
| Simulink.sdi.Run
| Simulink.sdi.Run.getSignalByIndex
| Simulink.sdi.Run.getSignalIDByIndex
| Simulink.sdi.createRun
| Simulink.sdi.getSignal
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.