Этот пример показывает, как преобразовать данные timeseries MATLAB® в формат Dataset
. myvdp_timeseries
является моделью vdp
с два К блокам Рабочей области, сконфигурированным для simout и данных регистрации simout1 в формате timeseries MATLAB. Рассмотрите использование процедуры как этот, если у вас есть модели, которые используют Для блоков Рабочей области к данным логов к формату timeseries MATLAB.
Используйте конструктора Simulink.SimulationData.Dataset
, чтобы преобразовать данные timeseries MATLAB в формат Dataset
и затем конкатенировать эти два набора данных.
Начиная с модели vdp
добавьте два К блокам Рабочей области к модели как показано.
Установите параметр формата Сохранения обоих блоков. Установите Timeseries
.
Сохраните модель как myvdp_timeseries
.
Моделируйте модель.
Данные логов моделирования с помощью К блокам Рабочей области.
Доступ к формату журналирования сигнала, logsout
.
logsout
logsout = Simulink.SimulationData.Dataset Package: Simulink.SimulationData Characteristics: Name: 'logsout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -Use get or getElement to access elements by index or name. -Use addElement or setElement to add or modify elements. Methods, Superclasses
Преобразуйте данные timeseries MATLAB от обоих До блоков Рабочей области к Dataset
.
ds = Simulink.SimulationData.Dataset(simout); ds1 = Simulink.SimulationData.Dataset(simout1);
ds является именем переменной первых данных блока To Workspace. ds1 является именем переменной вторых данных блока To Workspace.
Конкатенация обоих наборов данных в dsfinal. Заметьте что формат соответствий dsfinal тот из logsout
.
dsfinal = ds.concat(ds1)
dsfinal = Simulink.SimulationData.Dataset Package: Simulink.SimulationData Characteristics: Name: 'simout' Total Elements: 2 Elements: 1: 'x1' 2: 'x2' -Use get or getElement to access elements by index or name. -Use addElement or setElement to add or modify elements. Methods, Superclasses
Этот пример показывает, как преобразовать структуру без данных времени к формату Dataset
. myvdp_structure
является моделью vdp
с два К блокам Рабочей области, сконфигурированным для simout и данных регистрации simout1 в формате структуры, как показано.
Если у вас есть модели, которые используют Для блоков Рабочей области к данным логов, чтобы структурировать формат, рассмотреть использование процедуры как этот, чтобы преобразовать их в формат Dataset
.
Начиная с модели vdp
добавьте два К блокам Рабочей области к модели как показано.
В параметре формата Сохранения обоих блоков выберите Structure
.
Включите журналирование сигнала для двух сигналов, собирающихся в два К блокам Рабочей области входить в систему формат Ds
.
Сохраните модель как myvdp_structure
.
Моделируйте модель.
Данные логов моделирования с помощью К блокам Рабочей области.
Преобразуйте данные структуры от обоих До блоков Рабочей области к Dataset
.
ds = Simulink.SimulationData.Dataset(simout); ds1 = Simulink.SimulationData.Dataset(simout1);
simout является именем переменной первых данных блока To Workspace. simout1 является именем переменной вторых данных блока To Workspace.
С преобразованием структуры без времени или массива, время запускается в t=0 и инкрементах 1.
Получите значения первого элемента в ds.
ds.get(1).Values.Time
ans = 0 1 2 3 . . . 61 62 63
Получите временные стоимости первого элемента от журналирования сигнала.
logsout.get(1).Values.Time
ans = 0 0.0001 0.0006 0.0031 . . . 19.2802 19.6802 20.0000
Наблюдайте несоответствие в метках времени между
Данные вошли в систему структура без времени, когда вы преобразовываете в формат Dataset
Данные вошли в систему формат Dataset
Когда вы используете сигнал Dataset
по умолчанию журналирование формата, Simulink® сохраняет данные журналирования в объекте Simulink.SimulationData.Dataset
. Для получения информации об извлечении данных сигнала от того объекта смотрите страницу с описанием
.Simulink.SimulationData.Dataset
Объект Simulink.SimulationData.Dataset
содержит объект
для каждого регистрируемого сигнала.Simulink.SimulationData.Signal
Для сигналов шины объект Simulink.SimulationData.Signal
содержит структуру MATLAB объекты
.timeseries
Класс Simulink.SimulationData.Dataset
предоставляет два метода для доступа к данным регистрации сигнала и ее связанной информации.
Имя | Описание |
---|---|
Можно также использовать метод | Получите элемент или набор элементов от набора данных, на основе индекса, имени или блока path. |
Получите число элементов в наборе данных. |
Например, доступа к регистрации сигнала данных, который использует формат Dataset
, смотрите
.Simulink.SimulationData.Dataset
Данные регистрации сигнала для массива шин используют сигнал Dataset
журналирование формата.
Общий подход, чтобы получить доступ к данным для определенного сигнала в массиве шин:
Используйте Simulink.SimulationData.Dataset.get
(или getElement
) метод, чтобы получить доступ к определенному сигналу в записанных данных (по умолчанию, переменная logsout
).
Чтобы получить значения, индексируйте в массиве шин.
Индексируйте снова, чтобы получить данные для определенной шины.
Например, чтобы получить данные регистрации сигнала для блока Constant6 в модели ex_log_nested_aob
, для topBus
сигнализируют, что подает блок Terminator:
logsout.getElement('topBus').Values.a(2,2).firstConst.data
Вот дополнительные примеры доступа к массиву сигнала шин регистрация данных. Для другого примера, который показывает, как регистрировать массив данных шин, смотрите sldemo_mdlref_bus
.
Для модели с несколькими сигналами, которые имеют то же имя сигнала, данные регистрации сигнала включают объект Simulink.SimulationData.Signal
для каждого сигнала, который имеет двойное название.
Чтобы получить доступ к определенному сигналу, который имеет двойное название, используйте один из этих подходов:
Чтобы найти данные для определенного сигнала, визуально осмотрите отображенный вывод объектов Simulink.SimulationData.Signal
.
Используйте метод Simulink.SimulationData.Dataset.getElement
, задавая blockpath для исходного блока сигнала.
Чтобы выполнить итерации через сигналы с дублирующимся именем сигнала, создайте скрипт с помощью метода Simulink.SimulationData.Dataset.getElement
с индексным аргументом.
Используйте диалоговое окно Signal Properties, чтобы задать другое имя. Рассмотрите использование этого подхода, когда сигналы с двойным названием не появятся в нескольких экземплярах модели, на которую ссылаются, в режиме normal mode.
В модели щелкните правой кнопкой по сигналу.
В контекстном меню выберите Properties.
В диалоговом окне Signal Properties, определенном имени Журналирования к Custom
и задают другое имя, чем имя сигнала.
Моделируйте модель и используйте метод Simulink.SimulationData.Dataset.getElement
с аргументом имени.
Также можно использовать Селектор Журналирования Сигнала, чтобы получить доступ к определенному сигналу. Для получения дополнительной информации смотрите Сигнал Переопределения Регистрировать Настройки с Селектором Журналирования Сигнала.
Чтобы обработать символы новой строки в журналировании имен в данных регистрации сигнала, который использует формат Dataset
, используйте команду sprintf
в вызове getElement
. Например:
topOut.getElement(sprintf('INCREMENT\nBUS'))
Simulink.SimulationData.Dataset