Доступ к данным сигнала и метаданным
Simulink.sdi.Signal
объект содержит данные и метаданные для сигнала в Инспекторе Данных моделирования. Можно использовать Signal
свойства объектов, чтобы смотреть метаданные сигнала, визуализируйте сигналы на графиках временной зависимости и сравните сигналы с помощью Simulink.sdi.compareSignals
функция.
Simulink.sdi.Signal
объект создается для каждого сигнала, вы входите в систему симуляция модели или импортируете в Инспектора Данных моделирования. Можно получить доступ к Signal
объекты в Инспекторе Данных моделирования несколько путей. Обычно получить доступ к Signal
объект, сначала необходимо получить Simulink.sdi.Run
объект, который содержит сигнал.
Simulink.sdi.getSignal
функция возвращает Signal
объект, который соответствует ID сигнала, который вы обеспечиваете.
getSignal
функция возвращает Signal
объект с заданным ID сигнала в заданном Run
объект.
getSignalByIndex
функция возвращает Signal
объект в заданном индексе в заданном Run
объект.
ID
— Идентификатор сигналаЭто свойство доступно только для чтения.
Уникальный номер, идентифицирующий сигнал, возвращенный как целое число. Инспектор Данных моделирования присваивает уникальный числовой ID каждому запуску и сигналу.
RunID
— Запустите идентификаторЭто свойство доступно только для чтения.
Запустите идентификатор для запуска, который содержит сигнал, возвращенный как целое число. Инспектор Данных моделирования присваивает уникальный числовой ID каждому запуску и сигналу.
Name
— Имя сигналаИмя сигнала в виде вектора символов или строки. Когда Signal
объект содержит данные, регистрируемые от симуляции, имя совпадает с именем, заданным для сигнала в модели. Если модель не задает имя, имя сигнала является блоком path с блоком, который производит сигнал.
Пример: 'fuel'
Description
— Описание сигнала''
(значение по умолчанию) | вектор символов | строкаОписание сигнала в виде вектора символов или строки. Можно использовать Description
свойство аннотировать сигнал или идентифицировать содержимое сигнала вне Name
. Когда вы регистрируете данные Simscape™ Инспектору Данных моделирования, Description
свойство заполняется автоматически для каждого узла.
Units
— Модули измерения сигналаЕдиницы измерения сигнала в виде строки или вектора символов.
Пример: 'g/s'
Data Type
— Тип данных для данных сигналаЭто свойство доступно только для чтения.
Тип данных данных сигнала, возвращенных как вектор символов или строка.
Пример: 'double'
Complexity
— Сложность данных сигнала"real"
| "complex"
Это свойство доступно только для чтения.
Сложность данных сигнала, возвращенных как "real"
или "complex"
.
Пример: "real"
SampleTime
— Шаг расчета сигналаЭто свойство доступно только для чтения.
Шаг расчета сигнала, возвращенный как вектор символов или скаляр. Значение 'Continuous'
указывает на симуляцию переменного шага.
Пример: 'Continuous'
Пример: '0.1'
Model
— Имя модели, которая произвела сигналЭто свойство доступно только для чтения.
Имя модели, которая произвела сигнал, возвратилось как вектор символов. Model
свойство пусто для Signal
объекты, которые содержат данные, которые не были произведены путем симуляции модели.
Пример: 'sldemo_fuelsys'
BlockPath
— Блок path для блока, который произвел сигналЭто свойство доступно только для чтения.
Блок path для блока, который произвел сигнал, возвратился как символьный массив. BlockPath
свойство является относительным путем, который не включает иерархию модели. BlockPath
свойство пусто для Signal
объекты, которые содержат данные, которые не были произведены путем симуляции модели.
Пример: 'sldemo_fuelsys/Engine Gas Dynamics'
FullBlockPath
— Полный блок path для блока, который произвел сигналЭто свойство доступно только для чтения.
Полный блок path для блока, который произвел сигнал, включая полную иерархию модели, возвратился как вектор символов. Для сигналов в моделях, на которые ссылаются, FullBlockPath
массив ячеек, который содержит полный путь. Для других сигналов, FullBlockPath
идентично BlockPath
. FullBlockPath
свойство пусто для Signal
объекты, которые содержат данные, которые не были произведены путем симуляции модели.
BlockName
— Имя блока, который произвел сигналЭто свойство доступно только для чтения.
Имя блока, который произвел сигнал, возвратилось как вектор символов. BlockName
свойство пусто для Signal
объекты, которые содержат данные, которые не были произведены путем симуляции модели.
Пример: 'Engine Gas Dynamics'
PortIndex
— Блокируйте индекс портаЭто свойство доступно только для чтения.
Индекс выходного порта, соединенного с сигналом на блоке, который производит сигнал. PortIndex
свойство пусто для Signal
объекты, которые содержат данные, которые не были произведены путем симуляции модели.
Пример 1
Dimensions
— Размерности сигналаЭто свойство доступно только для чтения.
Размерности сигнала, возвращенные как целочисленный или целочисленный массив.
Пример: [1 2]
Channel
— Индекс сигнала в матрицеЭто свойство доступно только для чтения.
Индекс сигнала в матрице, возвращенной как целочисленный массив.
NumPoints
— Количество выборок в сигналеЭто свойство доступно только для чтения.
Количество выборок в сигнале, возвращенном как целое число.
Values
— Значения сигналовtimeseries
| структураВременные стоимости и значения данных для сигнала, возвращенного как timeseries
объект для сигналов нешины или структуры, совпадающей с иерархией шины для сигналов шины.
RootSource
— Высокоуровневая структура, которая содержит импортированный сигналЭто свойство доступно только для чтения.
Имя высокоуровневой структуры, содержащей сигнал, возвращенный как вектор символов. RootSource
свойство только имеет значение для импортированных сигналов.
Пример: Когда вы импортируете Simulink.SimulationOutput
объект simOut
содержа структуру xout
, RootSource
'simOut.get('xout')'
TimeSource
— Источник импортированных данных времени сигналаЭто свойство доступно только для чтения.
Путь к данным времени сигнала, возвращенным как вектор символов. TimeSource
свойство только имеет значение для импортированных сигналов.
Пример: Когда вы импортируете Simulink.SimulationOutput
объект simOut
содержа структуру xout
, TimeSource
'simOut.get('xout').time'
DataSource
— Источник импортированных данных сигналаЭто свойство доступно только для чтения.
Путь к демонстрационным значениям сигнала, возвращенным как символьный массив. DataSource
свойство только имеет значение для импортированных сигналов.
Пример: Когда вы импортируете Simulink.SimulationOutput
объект simOut
содержа структуру xout
, DataSource
'simOut.get('xout').signals(1).values'
Children
— Сигналы содержатся в составном сигналеSimulink.sdi.Signal
векторЭто свойство доступно только для чтения.
Сигналы содержатся в составном сигнале, возвращенном как Simulink.sdi.Signal
объекты. Children
свойство пусто для скалярных сигналов.
ComplexFormat
— Формат отображения для комплексных сигналов"real-imaginary"
| "magnitude"
| "magnitude-phase"
| "phase"
Сложный формат раньше отображал комплексные данные сигнала в Инспекторе Данных моделирования в виде одного из следующих значений. Можно изменить ComplexFormat
свойство для Signal
возразите, чтобы измениться, как Инспектор Данных моделирования отображает данные сигнала, когда объект содержит данные для комплексного сигнала.
"real-imaginary"
— Действительные и мнимые компоненты отображения сигнала вместе, когда вы строите сигнал. Мнимый компонент сигнала построен с различным оттенком Line Color.
"magnitude"
— Величина сигнала отображается, когда вы строите сигнал.
"magnitude-phase"
— Величина и фаза отображения сигнала вместе, когда вы строите сигнал.
"phase"
— Фаза сигнала отображается, когда вы строите сигнал. Фаза построена с различным оттенком Line Color.
Типы данных: char |
string
Checked
— Построен ли сигнал
или false
(значение по умолчанию) | 1
или true
Построен ли сигнал в виде логического значения. Установка Checked
к false
очищает сигнал от всех подграфиков. Установка Checked
к true
строит сигнал на активном подграфике.
Типы данных: логический
LineColor
— Цвет сигнальной линии
- 3
векторЦвет сигнала в графиках в виде 1
- 3
Вектор RGB со значениями между 0
и 1
.
Пример: [0 0.5 0.5]
Типы данных: double
LineDashed
— Стиль сигнальной линии'-'
| '--'
| ':'
| '-.'
Стиль сигнальной линии, используемый при отображении сигнала в Инспекторе Данных моделирования в виде одного из следующих значений:
'-'
— Тело
'--'
— Пунктирный
':'
— Точечный
'-.'
— Отмеченный точкой тире
InterpMethod
метод интерполяции'linear'
(значение по умолчанию) | 'zoh'
| 'none'
Метод интерполяции используется в визуализации данных и шаге синхронизации сравнений в виде одного из следующих значений:
'zoh'
— Нулевой порядок содержит интерполяцию
'linear'
— Линейная интерполяция
'none'
— Никакая интерполяция
Для получения дополнительной информации об опциях интерполяции, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
AbsTol
— Абсолютный допуск
(значение по умолчанию) | скалярАбсолютный допуск, чтобы использовать в сравнениях сигнала в виде скаляра с положительным знаком.
Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol
свойство установлено в 1
или true
. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Типы данных: double
RelTol
— Относительный допуск
(значение по умолчанию) | скалярОтносительный допуск, чтобы использовать в сравнениях сигнала в виде скаляра с положительным знаком. Относительный допуск выражается как дробный множитель. Например, 0.1
задает 10-процентный допуск.
Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol
свойство установлено в 1
или true
. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.05
Типы данных: double
TimeTol
— Допуск времени
(значение по умолчанию) | скалярДопуск времени к сигналу используется в сравнениях сигнала в виде скаляра с положительным знаком. Задайте допуск времени в секундах.
Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol
свойство установлено в 1
или true
. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Пример: 0.1
Типы данных: double
OverrideGlobalTol
— Используют ли сравнения допуск сигнала
или false
(значение по умолчанию) | 1
или true
Используют ли сравнения значения допуска сигнала вместо глобальных значений допуска в виде логического значения. Установите OverrideGlobalTol
свойство к 1
или true
использовать значения допуска, заданные в Signal
свойства объектов. Установите свойство на 0
или false
использовать глобальные значения допуска.
Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
Типы данных: логический
SyncMethod
— Метод синхронизации'union'
(значение по умолчанию) | 'intersection'
Метод раньше синхронизировал сигналы в сравнениях в виде 'union'
или 'intersection'
. Для получения дополнительной информации об опциях синхронизации, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.
convertUnits | Преобразуйте единицы Simulink.sdi.Signal объект |
export | Экспортируйте Simulink.sdi.Signal возразите против рабочей области или файла |
getAsTall | Создайте длинное расписание из Simulink.sdi.Signal объект |
plotOnSubPlot | Постройте Simulink.sdi.Signal объект на Инспекторе Данных моделирования подграфик |
Используя Инспектора Данных моделирования программируемый интерфейс, можно задать значения допуска сигнала, чтобы использовать в сравнениях. Этот пример использует slexAircraftExample
модель и Инспектор Данных моделирования, чтобы оценить эффект изменения постоянной времени для фильтра lowpass после входа управления.
Сконфигурируйте модель
Загрузите модель и отметьте представляющие интерес сигналы для логгирования. Этот пример данные логов для q
и alpha
сигналы.
load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',3,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')
Запустите симуляции
Запуститесь симуляции с различным lowpass фильтруют постоянные времени, чтобы сгенерировать результаты выдержать сравнение. slexAircraftExample
модель хранит переменные, сопоставленные моделью в рабочем пространстве модели. Чтобы изменить значение постоянной времени, получите доступ к рабочему пространству модели и используйте assignin
функция.
out1 = sim('slexAircraftExample'); modelWorkspace = get_param('slexAircraftExample','modelworkspace'); assignin(modelWorkspace,'Ts',1) out2 = sim('slexAircraftExample');
Доступ и сравнивает результаты симуляции
Доступ к результатам симуляции с помощью Инспектора Данных моделирования программируемый интерфейс. Каждая симуляция создает запуск в Инспекторе Данных моделирования с уникальным ID запуска. Вы используете идентификаторы запуска, чтобы сравнить результаты симуляции.
runIDs = Simulink.sdi.getAllRunIDs; runIDTs1 = runIDs(end-1); runIDTs2 = runIDs(end);
Используйте Simulink.sdi.compareRuns
функция, чтобы сравнить данные из симуляций. Затем смотрите Status
свойство результата сигнала видеть, находились ли сигналы в пределах допуска по умолчанию 0.
diffRun1 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); sig1Result1 = getResultByIndex(diffRun1,1); sig2Result1 = getResultByIndex(diffRun1,2); sig1Result1.Status
ans = OutOfTolerance
sig2Result1.Status
ans = OutOfTolerance
Сравните запуски с допусками сигнала
По умолчанию сигналы используют 0
для всех значений допуска, таким образом, сравнение возвращает результаты из допуска, когда сигналы не идентичны. Чтобы далее анализировать эффект изменения постоянной времени, задайте значения допуска для сигналов. Можно задать допуски к программируемому сравнению с помощью свойств Simulink.sdi.Signal
объекты в запусках вы выдерживаете сравнение. Сравнение использует допуски, заданные в базовом Signal
объект. Этот пример задает комбинацию времени и абсолютных допусков.
Задавать допуски, первый доступ Simulink.sdi.Signal
объекты, которые соответствуют каждому сигналу в запусках, которые вы хотите сравнить.
run1 = Simulink.sdi.getRun(runIDTs1); sigID1 = getSignalIDByIndex(run1,1); sigID2 = getSignalIDByIndex(run1,2); sig1 = Simulink.sdi.getSignal(sigID1); sig2 = Simulink.sdi.getSignal(sigID2);
Проверяйте Name
свойство идентифицировать каждый Signal
объект.
sig1.Name
ans = 'q, rad/sec'
sig2.Name
ans = 'alpha, rad'
Задайте абсолютный допуск 0.1
и допуск времени 0.6
для q
сигнал с помощью AbsTol
и TimeTol
свойства q
предупредите об объекте в базовом запуске.
sig1.AbsTol = 0.1; sig1.TimeTol = 0.6;
Задайте абсолютный допуск 0.2
и допуск времени 0.8
для alpha
сигнал с помощью AbsTol
и TimeTol
свойства alpha
предупредите об объекте в базовом запуске.
sig2.AbsTol = 0.2; sig2.TimeTol = 0.8;
Сравните запуски снова и получите доступ к результатам.
diffRun2 = Simulink.sdi.compareRuns(runIDTs1,runIDTs2); sig1Result2 = getResultByIndex(diffRun2,1); sig2Result2 = getResultByIndex(diffRun2,2);
Проверяйте Status
свойство каждого сигнала определить, находились ли результаты сравнения в пределах заданных допусков.
sig1Result2.Status
ans = WithinTolerance
sig2Result2.Status
ans = WithinTolerance
В этом примере показано, как получить Simulink.sdi.Signal
возразите и измените его свойства с помощью Инспектора Данных моделирования программируемый интерфейс.
Создайте данные в инспекторе данных моделирования
Когда вы симулируете модель, что данные логов, запуск создается в Инспекторе Данных моделирования, чтобы содержать записанные данные. Можно также создать запуск в Инспекторе Данных моделирования путем импортирования данных. Этот пример симулирует slexAircraftExample
модель и регистрирует данные в Dataset
формат.
simOut = sim('slexAircraftExample','SaveFormat','Dataset');
Получите Simulink.sdi.Signal
Объект
Программируемая симуляция возвращает записанные данные в переменной simOut
рабочей области. Можно получить доступ к записанным данным в той переменной. Однако, чтобы использовать Инспектора Данных моделирования программируемый интерфейс, необходимо получить доступ к записанным данным в
Simulink.sdi.Run
и Simulink.sdi.Signal
объекты.
Во-первых, используйте Simulink.sdi.getCurrentSimulationRun
получить Run
объект, который был создан, когда вы симулировали slexAircraftExample
модель.
aircraftRun = Simulink.sdi.getCurrentSimulationRun('slexAircraftExample');
Можно использовать getAllSignals
функционируйте, чтобы получить доступ к Signal
объекты для всех сигналов в запуске. От возвращенного массива Signal
объекты, выберите первый сигнал.
signals = getAllSignals(aircraftRun); sig = signals(1);
Измените свойства сигнала
Simulink.sdi.Signal
объект имеет свойства, которые задают опции для сравнения и визуализации сигнала. Задайте стиль линии и цвет для сигнала. Затем используйте Simulink.sdi.setSubPlotLayout
сконфигурировать Инспектора Данных моделирования, чтобы показать один подграфик и использовать plotOnSubPlot
функционируйте, чтобы построить сигнал.
sig.LineColor = [1 0.4 0.6];
sig.LineDashed = '-';
Simulink.sdi.setSubPlotLayout(1,1)
plotOnSubPlot(sig,1,1,true)
Используйте Simulink.sdi.view
функционируйте, чтобы открыть Инспектора Данных моделирования и просмотреть нанесенный на график сигнал.
Этот пример использует slexAircraftExample
модель, чтобы продемонстрировать, как сравнить сигналы ввода и вывода системы управления.
Сконфигурируйте и симулируйте модель
slexAircraftExample
модель не делает данных логов. Загрузите модель и отметьте сигналы ввода и вывода для логгирования.
load_system('slexAircraftExample') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot',1,'on') Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model',4,'on')
Симулируйте модель. Данные для регистрируемых сигналов регистрируют Инспектору Данных моделирования и к рабочей области.
out = sim('slexAircraftExample');
Доступ к данным моделирования
Используйте Инспектора Данных моделирования программируемый интерфейс, чтобы получить доступ к данным. Simulink.sdi.Run.getLatest
функция возвращает последний раз созданный запуск в Инспекторе Данных моделирования репозиторий. Используйте getSignalIDByIndex
функционируйте, чтобы получить доступ к идентификаторам сигнала для регистрируемых сигналов.
aircraftRun = Simulink.sdi.Run.getLatest; signalID1 = getSignalIDByIndex(aircraftRun,1); signalID2 = getSignalIDByIndex(aircraftRun,2);
Задайте значения допуска
Можно задать значения допуска, чтобы использовать в сравнении в качестве свойства в регистрируемом Simulink.sdi.Signal
объект. Используйте Simulink.sdi.getSignal
функционируйте, чтобы получить доступ к Signal
объект с помощью ID сигнала.
signal1 = Simulink.sdi.getSignal(signalID1); signal1.AbsTol = 0.1;
Сравните сигналы
Используйте Simulink.sdi.compareSignals
функция, чтобы сравнить сигналы ввода и вывода. Этот пример использует isValidSignalID
функция, чтобы проверить, что оба идентификатора сигнала все еще допустимы прежде, чем вызвать Simulink.sdi.compareSignals
функция. ID сигнала становится недопустимым, когда сигнал удален от Инспектора Данных моделирования. После сравнения проверяйте состояние в Simulink.sdi.DiffSignalResult
объект.
if (isValidSignalID(aircraftRun,signalID1) && isValidSignalID(aircraftRun,signalID2)) sigDiff = Simulink.sdi.compareSignals(signalID1,signalID2); match = sigDiff.Status end
match = OutOfTolerance
Результат сравнения вне допуска. Можно использовать Simulink.sdi.view
функция, чтобы смотреть и анализировать результаты сравнения.
Этот пример демонстрирует, как получить доступ к Simulink.sdi.Run
объект для Инспектора Данных моделирования, запущенного созданный путем логгирования сигналов. От Simulink.sdi.Run
объект можно получить Simulink.sdi.Signal
объекты, которые содержат регистрируемые данные сигнала и метаданные. Можно использовать Signal
объекты и plotOnSubPlot
функция, чтобы отобразить данные на графике в Инспекторе Данных моделирования.
Создайте запущенную симуляцию и доступ к Run
Объект
ex_vdp
модель регистрирует два сигнала. Чтобы создать симуляцию, запущенную содержащий записанные данные, симулируйте модель.
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.Run
| Simulink.sdi.createRun
| Simulink.sdi.getSignal
| getSignal
| getSignalByIndex
| getSignalIDByIndex
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.