Simulink.sdi.Signal

Доступ к данным сигнала и метаданным

Описание

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 каждому запуску и сигналу.

Имя сигнала в виде вектора символов или строки. Когда Signal объект содержит данные, регистрируемые от симуляции, имя совпадает с именем, заданным для сигнала в модели. Если модель не задает имя, имя сигнала является блоком path с блоком, который производит сигнал.

Пример: 'fuel'

Описание сигнала в виде вектора символов или строки. Можно использовать Description свойство аннотировать сигнал или идентифицировать содержимое сигнала вне Name. Когда вы регистрируете данные Simscape™ Инспектору Данных моделирования, Description свойство заполняется автоматически для каждого узла.

Единицы измерения сигнала в виде строки или вектора символов.

Пример: 'g/s'

Это свойство доступно только для чтения.

Тип данных данных сигнала, возвращенных как вектор символов или строка.

Пример: 'double'

Это свойство доступно только для чтения.

Сложность данных сигнала, возвращенных как "real" или "complex".

Пример: "real"

Это свойство доступно только для чтения.

Шаг расчета сигнала, возвращенный как вектор символов или скаляр. Значение 'Continuous' указывает на симуляцию переменного шага.

Пример: 'Continuous'

Пример: '0.1'

Это свойство доступно только для чтения.

Имя модели, которая произвела сигнал, возвратилось как вектор символов. Model свойство пусто для Signal объекты, которые содержат данные, которые не были произведены путем симуляции модели.

Пример: 'sldemo_fuelsys'

Это свойство доступно только для чтения.

Блок path для блока, который произвел сигнал, возвратился как символьный массив. BlockPath свойство является относительным путем, который не включает иерархию модели. BlockPath свойство пусто для Signal объекты, которые содержат данные, которые не были произведены путем симуляции модели.

Пример: 'sldemo_fuelsys/Engine Gas Dynamics'

Это свойство доступно только для чтения.

Полный блок path для блока, который произвел сигнал, включая полную иерархию модели, возвратился как вектор символов. Для сигналов в моделях, на которые ссылаются, FullBlockPath массив ячеек, который содержит полный путь. Для других сигналов, FullBlockPath идентично BlockPath. FullBlockPath свойство пусто для Signal объекты, которые содержат данные, которые не были произведены путем симуляции модели.

Это свойство доступно только для чтения.

Имя блока, который произвел сигнал, возвратилось как вектор символов. BlockName свойство пусто для Signal объекты, которые содержат данные, которые не были произведены путем симуляции модели.

Пример: 'Engine Gas Dynamics'

Это свойство доступно только для чтения.

Индекс выходного порта, соединенного с сигналом на блоке, который производит сигнал. PortIndex свойство пусто для Signal объекты, которые содержат данные, которые не были произведены путем симуляции модели.

Пример 1

Это свойство доступно только для чтения.

Размерности сигнала, возвращенные как целочисленный или целочисленный массив.

Пример: [1 2]

Это свойство доступно только для чтения.

Индекс сигнала в матрице, возвращенной как целочисленный массив.

Это свойство доступно только для чтения.

Количество выборок в сигнале, возвращенном как целое число.

Временные стоимости и значения данных для сигнала, возвращенного как timeseries объект для сигналов нешины или структуры, совпадающей с иерархией шины для сигналов шины.

Это свойство доступно только для чтения.

Имя высокоуровневой структуры, содержащей сигнал, возвращенный как вектор символов. RootSource свойство только имеет значение для импортированных сигналов.

Пример: Когда вы импортируете Simulink.SimulationOutput объект simOut содержа структуру xout, RootSource 'simOut.get('xout')'

Это свойство доступно только для чтения.

Путь к данным времени сигнала, возвращенным как вектор символов. TimeSource свойство только имеет значение для импортированных сигналов.

Пример: Когда вы импортируете Simulink.SimulationOutput объект simOut содержа структуру xout, TimeSource 'simOut.get('xout').time'

Это свойство доступно только для чтения.

Путь к демонстрационным значениям сигнала, возвращенным как символьный массив. DataSource свойство только имеет значение для импортированных сигналов.

Пример: Когда вы импортируете Simulink.SimulationOutput объект simOut содержа структуру xout, DataSource 'simOut.get('xout').signals(1).values'

Это свойство доступно только для чтения.

Сигналы содержатся в составном сигнале, возвращенном как Simulink.sdi.Signal объекты. Children свойство пусто для скалярных сигналов.

Свойства визуализации

Сложный формат раньше отображал комплексные данные сигнала в Инспекторе Данных моделирования в виде одного из следующих значений. Можно изменить ComplexFormat свойство для Signal возразите, чтобы измениться, как Инспектор Данных моделирования отображает данные сигнала, когда объект содержит данные для комплексного сигнала.

  • "real-imaginary" — Действительные и мнимые компоненты отображения сигнала вместе, когда вы строите сигнал. Мнимый компонент сигнала построен с различным оттенком Line Color.

  • "magnitude" — Величина сигнала отображается, когда вы строите сигнал.

  • "magnitude-phase" — Величина и фаза отображения сигнала вместе, когда вы строите сигнал.

  • "phase" — Фаза сигнала отображается, когда вы строите сигнал. Фаза построена с различным оттенком Line Color.

Типы данных: char | string

Построен ли сигнал в виде логического значения. Установка Checked к false очищает сигнал от всех подграфиков. Установка Checked к true строит сигнал на активном подграфике.

Типы данных: логический

Цвет сигнала в графиках в виде 1- 3 Вектор RGB со значениями между 0 и 1.

Пример: [0 0.5 0.5]

Типы данных: double

Стиль сигнальной линии, используемый при отображении сигнала в Инспекторе Данных моделирования в виде одного из следующих значений:

  • '-' — Тело

  • '--' — Пунктирный

  • ':' — Точечный

  • '-.' — Отмеченный точкой тире

Метод интерполяции используется в визуализации данных и шаге синхронизации сравнений в виде одного из следующих значений:

  • 'zoh' — Нулевой порядок содержит интерполяцию

  • 'linear' — Линейная интерполяция

  • 'none' — Никакая интерполяция

Для получения дополнительной информации об опциях интерполяции, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Свойства сравнения

Абсолютный допуск, чтобы использовать в сравнениях сигнала в виде скаляра с положительным знаком.

Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol свойство установлено в 1 или true. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.1

Типы данных: double

Относительный допуск, чтобы использовать в сравнениях сигнала в виде скаляра с положительным знаком. Относительный допуск выражается как дробный множитель. Например, 0.1 задает 10-процентный допуск.

Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol свойство установлено в 1 или true. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.05

Типы данных: double

Допуск времени к сигналу используется в сравнениях сигнала в виде скаляра с положительным знаком. Задайте допуск времени в секундах.

Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала когда OverrideGlobalTol свойство установлено в 1 или true. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.1

Типы данных: double

Используют ли сравнения значения допуска сигнала вместо глобальных значений допуска в виде логического значения. Установите OverrideGlobalTol свойство к 1 или true использовать значения допуска, заданные в Signal свойства объектов. Установите свойство на 0 или false использовать глобальные значения допуска.

Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Типы данных: логический

Метод раньше синхронизировал сигналы в сравнениях в виде '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 функция.

Представленный в R2012b