В этом примере показано, как преобразовать MATLAB® данные timeseries в Dataset
формат. myvdp_timeseries
является vdp
модель с двумя блоками To Workspace, настроенными для simout и simout1 данных логгирования в формате TIMESERIES MATLAB. Рассмотрите использование процедуры, подобной этой, если у вас есть модели, которые используют блоки To Workspace для регистрации данных в формате timeseries MATLAB.
Используйте Simulink.SimulationData.Dataset
конструктор для преобразования данных timeseries MATLAB в Dataset
форматировать и затем объединять два набора данных.
Начиная с vdp
model, добавьте два блока To Workspace к модели, как показано на рисунке.
Установите параметр Save format для обоих блоков. Задайте Timeseries
.
Сохраните модель как myvdp_timeseries
.
Симулируйте модель.
Симуляция регистрирует данные с помощью блоков To Workspace.
Доступ к формату логгирования сигналов, 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 из обоих блоков To Workspace в 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
модель с двумя блоками To Workspace, сконфигурированными для моделирования и логгирования данных simout1 в формате структуры, как показано на рисунке.
Если у вас есть модели, которые используют блоки To Workspace для регистрации данных в формате структуры, рассмотрите использование такой процедуры, как эта, чтобы преобразовать их в Dataset
формат.
Начиная с vdp
model, добавьте два блока To Workspace к модели, как показано на рисунке.
В Save format параметре обоих блоков выберите Structure
.
Включите регистрацию сигналов для двух сигналов, идущих в два блока To Workspace, чтобы войти в Ds
формат.
Сохраните модель как myvdp_structure
.
Симулируйте модель.
Симуляция регистрирует данные с помощью блоков To Workspace.
Преобразуйте структурные данные из обоих блоков To Workspace в 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
The Simulink.SimulationData.Dataset
объект содержит
объект для каждого зарегистрированного сигнала.Simulink.SimulationData.Signal
Для сигналов шины, Simulink.SimulationData.Signal
объект содержит структуру MATLAB
объекты.timeseries
The Simulink.SimulationData.Dataset
класс предоставляет два метода доступа к данным логгирования сигналов и связанной с ними информации.
Имя | Описание |
---|---|
Можно также использовать | Получите элемент или коллекцию элементов из набора данных на основе индекса, имени или пути блока. |
Получите количество элементов в наборе данных. |
Для примера доступа к данным логгированиям сигнала, который использует 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
метод, задающий путь блока для исходного блока сигнала.
Чтобы выполнить итерацию сигналов с повторяющимся именем сигнала, создайте скрипт с помощью Simulink.SimulationData.Dataset.getElement
метод с аргументом индекс.
Используйте диалоговое окно Свойств сигнала», чтобы задать другое имя. Рассмотрите использование этого подхода, когда сигналы с повторяющимся именем не появляются в нескольких образцы ссылочной модели в режиме normal mode.
В модели щелкните правой кнопкой мыши сигнал.
В контекстном меню выберите Properties.
В диалоговом окне Свойства установите Logging name равным Custom
и задайте имя, отличное от имени сигнала.
Симулируйте модель и используйте Simulink.SimulationData.Dataset.getElement
метод с аргументом имя.
Совет
Также можно использовать селектор логгирования для доступа к определенному сигналу. Для получения дополнительной информации смотрите Override Signal Logging Settings with Signal Logging Selector.
Чтобы обработать символы новой строки в именах логгирования в данных логгированию сигналов, которые используют Dataset
формат, использование sprintf
команда в getElement
вызов. Для примера:
topOut.getElement(sprintf('INCREMENT\nBUS'))
Simulink.SimulationData.Dataset