Пакет: 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
— Идентификатор сигналаЧисловой идентификатор сигнала для сигнала, сгенерированного Моделированием Data Inspector. Можно получить ID сигнала для использования сигнала методы объекта Simulink.sdi.Run
или использования функции Simulink.sdi.getSignal
.
index
— Предупредите об индексе в рамках выполненияИндекс сигнала в рамках выполнения.
Пример 1
ID
— Идентификатор сигналаУникальный номер, идентифицирующий сигнал.
Пример: 1330
RunID
— Запустите идентификаторЗапустите идентификатор для выполнения, которое содержит сигнал.
Пример: 1402
Имя
Имя сигналаИмя сигнала.
Пример: 'топливо'
Модули
Модули измерения сигналаЕдиницы измерения сигнала.
Пример: 'g/s''
Тип данных
Тип данных для данных сигналаТип данных данных сигнала.
Пример: 'double'
Complexity
— Сложность данных сигналаЗадает, являются ли данные сигнала действительными или комплексными.
Пример: действительный
'SampleTime'
Частота дискретизации сигналаЧастота дискретизации сигнала. Значение 'Continuous'
указывает на моделирование переменного шага.
Пример: 'Непрерывный'
Пример: 0.1
Model
— Имя модели, которая произвела сигналИмя модели, которая произвела сигнал.
Пример: 'sldemo_fuelsys'
BlockPath
— Путь блока, который задает сигналПуть к блоку, который произвел сигнал.
Пример: 'Динамика Газа sldemo_fuelsys/Engine
FullBlockPath
— Путь блока, который задает сигналПуть к блоку, который генерирует сигнал включая полную иерархию модели. Для сигналов в эталонных моделях FullBlockPath
является массивом ячеек, содержащим полный путь. Для других сигналов FullBlockPath
идентичен BlockPath
.
Пример: 'sldemo_fuelsys/Engine Gas Dynamics/Mixing & Combustion/MinMax'
PortIndex
— Блокируйте индекс портаИндекс выходного порта, который задает сигнал.
Пример 1
Размерности
Размерности матрицы, содержащей сигналРазмерности матрицы, которая содержит сигнал.
Пример 1
Channel
— Индекс сигнала в матрицеИндексы сигнала для сигналов, которые являются частью вектора или матрицы.
Значения
Значения сигналовВременные стоимости и значения данных для сигнала. Для шин Values
является struct.
RootSource
— Высокоуровневая структура журналирования, содержащая сигнал, импортируется из рабочей областиИмя высокоуровневой структуры журналирования, содержащей сигнал, для сигналов, импортируется из MATLAB workspace.
TimeSource
— Источник данных времени сигнала импортируется из рабочей областиИмя переменной, содержащей данные времени сигнала для сигналов, импортируется из MATLAB workspace.
DataSource
— Источник данных импортируется из рабочей областиИмя массива, содержащего данные сигнала для сигналов, импортируется из MATLAB workspace.
ComplexFormat
— Формат отображения для комплексных сигналов"real-imaginary"
| "magnitude"
| "magnitude-phase"
| "phase"
Комплексный формат, задающий, как отобразить комплексные данные сигнала в Моделировании Data Inspector.
"real-imaginary"
— Действительные и мнимые компоненты отображения сигнала вместе, когда вы строите график сигнала. Мнимый компонент сигнала построен график с различным оттенком цвета линии.
"magnitude"
— Значение сигнала отображается, когда вы строите график сигнала.
"magnitude-phase"
— Значение и фаза отображения сигнала вместе, когда вы строите график сигнала.
"phase"
— Фаза сигнала отображается, когда вы строите график сигнала. Фаза построена график с различным оттенком цвета линии.
Типы данных: char | string
Checked
— PlottingЛогическое значение, указывающее, построен ли сигнал график на каком-либо подграфике. Установка Checked
к false
очищает сигнал от всех подграфиков. Установка Checked
к true
строит график сигнала на активном подграфике.
Типы данных: логический
'LineColor'
Цвет сигнальной линии1-by-3
Цвет сигнала в графиках, заданных как 1 3 вектор RGB.
Пример: [0 114 189]
Типы данных: double
LineDashed
— Стиль сигнальной линииСтиль сигнальной линии.
'-'
задает стиль сплошной линии.
'--'
задает стиль пунктирной линии.
':'
задает стиль точечной линии.
'-.'
задает стиль штрихпунктирной линии.
InterpMethod
— Метод интерполяцииМетод интерполяции используется в визуализации данных и синхронизации. 'zoh'
указывает, что нулевой порядок содержит, и 'linear'
задает линейную интерполяцию. Для получения дополнительной информации об опциях интерполяции, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
'AbsTol'
Абсолютный допускАбсолютный допуск с положительным знаком сигнала используется для сравнений сигнала. Data Inspector Моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Глобальная переменная Переопределения Tol установлена в yes
. Для получения дополнительной информации о допусках в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 0.1
Типы данных: double
'RelTol'
Относительный допускОтносительный допуск с положительным знаком к сигналу используется для сравнений сигнала. Data Inspector Моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Глобальная переменная Переопределения Tol установлена в yes
. Относительный допуск выражается как дробный множитель. Например, 0.1
задает 10-процентный допуск. Для получения дополнительной информации о допусках в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 0.05
Типы данных: double
TimeTol
— Допуск времениДопуск времени с положительным знаком к сигналу используется в сравнениях сигнала. Data Inspector Моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Глобальная переменная Переопределения Tol установлена в yes
. Задайте допуск времени в секундах. Для получения дополнительной информации о допусках в Моделировании Data Inspector, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
Пример: 0.1
Типы данных: double
SyncMethod
— Метод синхронизацииМетод раньше синхронизировал данные времени сигнала для сравнения. Для получения дополнительной информации об опциях синхронизации, смотрите, Как Моделирование Data Inspector Сравнивает Данные.
convertUnits | Преобразуйте единицы сигнала |
экспорт | Сигнал экспорта возражает против timeseries MATLAB |
getAsTall | Возвратите длинное расписание с временными стоимостями и значениями данных |
plotOnSubPlot | Сигнал графика на заданном подграфике |
Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).
Можно изменить значения допуска на основе сигнала сигналом, чтобы оценить эффект изменения параметра модели. Этот пример использует модель 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
Этот пример показывает, как получить объект Simulink.sdi.Signal
и изменить его свойства с помощью Моделирования Data Inspector программируемый интерфейс.
Получите объект Simulink.sdi.Signal
Во-первых, запустите моделирование, чтобы создать выполнение. Этот пример использует модель в качестве примера slexAircraftExample
. Затем используйте Моделирование Data Inspector программируемый интерфейс, чтобы получить объект 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));
Измените Signal Properties
Объект 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;
Просмотрите Signal Properties
Можно просмотреть свойства сигнала в командном окне и в Моделировании Data Inspector, чтобы проверить, что сигналу задали его свойства, как вы хотите их.
signalObj
signalObj = Signal with properties: ID: 45696 RunID: 45685 Name: 'Integrate:CSTATE' 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: [1×0 int32] Checked: 1 LineColor: [1 0.4000 0.6000] LineDashed: '-' InterpMethod: 'linear' AbsTol: 0 RelTol: 0 TimeTol: 0 SyncMethod: 'intersection' Values: [1×1 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 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 = aircraftRun.getSignalIDByIndex(1); signalID2 = aircraftRun.getSignalIDByIndex(2); if (aircraftRun.isValidSignalID(signalID1)) % Change signal tolerance signal1 = Simulink.sdi.getSignal(signalID1); signal1.AbsTol = 0.1; end if (aircraftRun.isValidSignalID(signalID1) && aircraftRun.isValidSignalID(signalID2)) % Compare signals sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2); % Check whether signals match within tolerance match = sigDiff.match end
match = logical
0
Этот пример демонстрирует, как получить доступ к объекту Simulink.sdi.Run
для выполнения, созданного путем журналирования сигналов к Моделированию Data Inspector. От объекта Simulink.sdi.Run
можно получить объекты Simulink.sdi.Signal
, которые можно использовать, чтобы просмотреть данные.
% Simulate model to create a run sim('sldemo_fuelsys') % Get runID for the run runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end); % Get run object for the run fuelRun = Simulink.sdi.getRun(runID); % Check signal count of the run fuelRun.signalCount
ans = int32
15
% Get signal objects for the signals in the run signal1 = fuelRun.getSignalByIndex(4); signal2 = fuelRun.getSignalByIndex(9); signal3 = fuelRun.getSignalByIndex(10); % Create subplot layout to display signals Simulink.sdi.setSubPlotLayout(3, 1) % Plot signals signal1.checked = true; signal2.plotOnSubPlot(2, 1, true); signal3.plotOnSubPlot(3, 1, true); % View plots in the Simulation Data Inspector Simulink.sdi.view
Используйте Моделирование Data Inspector пользовательский интерфейс, чтобы просмотреть и изменить сигналы и свойства сигнала.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.