Simulink.sdi. Класс сигнала

Пакет: 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.

Входные параметры

развернуть все

Числовой идентификатор сигнала для сигнала сгенерирован Инспектором Данных моделирования. Можно получить ID сигнала для использования сигнала методы объекта Simulink.sdi.Run или использования функции Simulink.sdi.getSignal.

Индекс сигнала в рамках выполнения.

Пример 1

Свойства

развернуть все

Signal Properties (только для чтения)

Уникальный номер, идентифицирующий сигнал.

Пример: 1330

Запустите идентификатор для выполнения, которое содержит сигнал.

Пример: 1402

Имя сигнала.

Пример: 'fuel'

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

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

Тип данных данных сигнала.

Пример: 'double'

Задает, являются ли данные сигнала действительными или комплексными.

Пример: 'real'

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

Пример: 'Continuous'

Пример: 0.1

Имя модели, которая произвела сигнал.

Пример: 'sldemo_fuelsys'

Путь к блоку, который произвел сигнал.

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

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

Пример: 'sldemo_fuelsys/Engine Gas Dynamics/Mixing & Combustion/MinMax'

Индекс выходного порта, который задает сигнал.

Пример 1

Размерности матрицы, которая содержит сигнал.

Пример 1

Индексы сигнала для сигналов, которые являются частью вектора или матрицы.

Временные стоимости и значения данных для сигнала. Для шин Values является struct.

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

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

Имя массива, содержащего данные сигнала для сигналов, импортируется из рабочего пространства MATLAB.

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

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

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

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

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

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

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

Логическое значение, указывающее, построен ли сигнал на каком-либо подграфике. Установка Checked к false очищает сигнал от всех подграфиков. Установка Checked к true строит сигнал на активном подграфике.

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

Цвет сигнала в графиках, заданных как 1 3 вектор RGB.

Пример: [0 114 189]

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

Стиль сигнальной линии.

  • '-' задает стиль сплошной линии.

  • '--' задает стиль пунктирной линии.

  • ':' задает стиль точечной линии.

  • '-.' задает стиль штрихпунктирной линии.

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

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

Абсолютный допуск с положительным знаком сигнала используется для сравнений сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.1

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

Относительный допуск с положительным знаком к сигналу используется для сравнений сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes. Относительный допуск выражается как дробный множитель. Например, 0.1 задает 10-процентный допуск. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.05

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

Допуск времени с положительным знаком к сигналу используется в сравнениях сигнала. Инспектор Данных моделирования использует допуски, заданные в свойствах сигнала базового сигнала, когда Override Global Tol установлен в yes. Задайте допуск времени в секундах. Для получения дополнительной информации о допусках в Инспекторе Данных моделирования, смотрите, Как Инспектор Данных моделирования Сравнивает Данные.

Пример: 0.1

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

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

Методы

convertUnits Преобразуйте единицы сигнала
экспорт Экспортируйте объект сигнала в timeseries MATLAB
getAsTall Возвратите длинное расписание с временными стоимостями и значениями данных
plotOnSubPlot Сигнал графика на заданном подграфике

Копировать семантику

Указатель. Чтобы изучить, как классы Handle влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

свернуть все

Можно изменить значения допуска на основе сигнала сигналом, чтобы оценить эффект изменения параметра модели. Этот пример использует модель slexAircraftExample и Инспектора Данных моделирования, чтобы оценить эффект изменения временной константы для фильтра нижних частот после входа управления.

Настройка

Загрузите модель и отметьте 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 и изменить его свойства с помощью Инспектора Данных моделирования программируемый интерфейс.

Получите объект 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: 8386
            RunID: 8372
             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: [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
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 для выполнения, созданного путем журналирования сигналов Инспектору Данных моделирования. От объекта 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

Альтернативы

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

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

Для просмотра документации необходимо авторизоваться на сайте