Simulink.SimulationData.createStructOfTimeseries

Создайте структуру timeseries данные для загрузки в качестве входов симуляции для шины

Описание

пример

tsStruct = Simulink.SimulationData.createStructOfTimeseries(busObj,tsStructIn) создает структуру с атрибутами, соответствующими заданным Simulink.Bus объект, busObj, и данные, заданные структурой timeseries объекты, tsStructIn.

Когда имена в структуре входа не совпадают с именами, заданными объектом шины, функция переименовывает поля в структуру output так, чтобы они совпадали с спецификацией объекта шины. Когда другие атрибуты, такие как тип данных и сложность, не совпадают, функция возвращает ошибку.

Можно использовать этот синтаксис, чтобы создать вход симуляции, который полностью или частично задает данные для bus.Вы также можете использовать этот синтаксис, чтобы переименовать элементы структуры, чтобы соответствовать именам в Simulink.Bus объект.

пример

tsStruct = Simulink.SimulationData.createStructOfTimeseries(busObj,tsCellArray) создает структуру timeseries объекты с атрибутами, соответствующими заданным Simulink.Bus объект, busObj, и данные, заданные массивом ячеек timeseries объекты, tsCellArray.

Когда имена в структуре входа не совпадают с именами, заданными объектом шины, функция переименовывает поля в структуру output так, чтобы они совпадали с спецификацией объекта шины. Когда другие атрибуты, такие как тип данных и сложность, не совпадают, функция возвращает ошибку.

Можно использовать этот синтаксис, чтобы создать вход симуляции, который полностью или частично задает данные для шины с помощью плоского списка timeseries объекты. Функция сопоставляет timeseries объекты иерархии, заданной Simulink.Bus объект с использованием поиска глубина-первая.

пример

tsStructArray = Simulink.SimulationData.createStructOfTimeseries(busObj,tsCellArray,dims) создает массив timeseries структуры, где атрибуты каждой структуры совпадают с атрибутами, заданными в Simulink.Bus объект, busObj с данными, заданными массивом ячеек timeseries объекты, tsCellArray. Область входа dims задает размерности массива.

пример

tsStruct = Simulink.SimulationData.createStructOfTimeseries(tsArray) создает структуру timeseries объекты из данных шины, хранящиеся в Simulink.TsArray объект, tsArray. В версиях перед R2016a логгирование сигналов создает Simulink.TsArray объекты для хранения записанных данных шины. Используйте этот синтаксис, когда вы хотите использовать данные шины, зарегистрированные в релизе перед R2016a использованием ModelDataLogs формат как вход симуляции.

Примеры

свернуть все

Можно использовать Simulink.Simulationdata.createStructOfTimeseries функция для создания структур timeseries объекты для использования в качестве входов симуляции для сигналов шины. В этом примере показано, как создать структуру timeseries для загрузки в модель с помощью данных timeseries, записанных из другой симуляции.

Создайте структуру Timeseries

Откройте ex_log_structtimeseries модель.

open_system('ex_log_structtimeseries')

Модель использует блоки Constant и Bus Creator, чтобы создать две шины, bus1 и bus2, с сигналами a, b, c, и d. Модель использует регистрацию сигналов, чтобы записать данные шины. Создайте данные шины путем симуляции модели.

out = sim('ex_log_structtimeseries');

Просмотрите данные в переменной logging logsout. Логгирование сигналов создает Simulink.SimulationData.Dataset объект с Simulink.SimulationData.Signal объекты как элементы.

logsout = out.logsout
logsout = 

Simulink.SimulationData.Dataset 'logsout' with 2 elements

                         Name  BlockPath                            
                         ____  ____________________________________ 
    1  [1x1 Signal]      bus1  ex_log_structtimeseries/Bus Creator 
    2  [1x1 Signal]      bus2  ex_log_structtimeseries/Bus Creator1

  - Use braces { } to access, modify, or add elements using index.

Можно использовать get функция для выбора Simulink.SimulationData.Signal объект для bus2. Данные шины находятся в Values свойство Simulink.SimulationData.Signal объект. Данные, представляющие bus2 регистрируется в структуре, содержащей timeseries объекты с именем c и d.

logsout.get(2).Values
ans = 

  struct with fields:

    c: [1x1 timeseries]
    d: [1x1 timeseries]

Загрузка строения модели

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

open_system('ex_load_structtimeseries')

Модель использует InBus Входной блок для загрузки входа данных шины. Блок Bus Selector выбирает сигналы из шины для отображения на блоках Display.

Дважды кликните InBus блокируйте и проверяйте его Тип данных на вкладке Атрибуты сигнала (Signal Attributes) диалогового окна. Тип данных задается как Simulink.Bus объект называется bus.

Закройте диалоговое окно и откройте Model Explorer. На вкладке Callbacks можно увидеть, как модель использует свои PreLoadFcn для определения Simulink.Bus объект, который определяет тип данных для блока Inport.

Откройте Параметры конфигурации и просмотрите спецификацию для параметра Входа на панели Данных Импорт/Экспорт. Модель использует переменную inputBus для его входов.

Создайте вход симуляции из структуры timeseries Данные

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

inputBus = logsout.get(1).Values
inputBus = 

  struct with fields:

    a: [1x1 timeseries]
    b: [1x1 timeseries]

Когда вы моделируете модель, блоки Display показывают значения 1 и 2 вход в систему bus1 и загружен в модель.

Как загрузить данные, записанные в журнал для bus2, вам нужно использовать Simulink.Bus объект, который определяет тип данных блока Inport и Simulink.SimulationData.createStructOfTimeseries для создания структуры timeseries с именами, заданными Simulink.Bus объект.

inputBus = Simulink.SimulationData.createStructOfTimeseries('bus',...
    logsout.get(2).Values)
inputBus = 

  struct with fields:

    a: [1x1 timeseries]
    b: [1x1 timeseries]

Когда вы моделируете модель, блоки Display показывают значения 3 и 4 вход в систему bus2 и загружен в модель.

В этом примере показано, как использовать Simulink.SimulationData.createStructOfTimeseries функция для создания частично заданного входа симуляции для шины. Этот пример регистрирует данные из ex_log_structtimeseries а затем загружает эти данные в ex_load_structtimeseries.

Создание timeseries Данные

Во-первых, откройте и симулируйте ex_log_structtimeseries модель. Модель регистрирует два сигнала шины, bus1 и bus2, созданный с использованием блоков Constant и Bus Creator. Доступ к logsout Dataset в Simulink.SimulationOutput объект, out.

open_system('ex_log_structtimeseries')
out = sim('ex_log_structtimeseries');

logsout = out.logsout;

Можно использовать структуру timeseries данные или массив ячеек timeseries данные для частичного задания входов симуляции для шины.

Частично задайте данные шины со структурой timeseries Данные

Откройте модель ex_load_structtimeseries Это позволит загрузить некоторые данные, зарегистрированные в предыдущем разделе.

open_system('ex_load_structtimeseries')

Используйте get функция для доступа к структуре timeseries данные, записанные для bus1.

bus1 = logsout.get(1).Values;

Затем замените b данные с [].

bus1.b = [];

The ex_load_structtimeseries модель использует переменную inputBus как его Вход. The Simulink.Bus объект, bus, который определяет тип данных для блока Inport, определяется в PreLoadFcn коллбэк для ex_load_structtimeseries модель. Потому что имена сигналов в bus1 соответствовать Simulink.Bus спецификация объекта для блока Inport в ex_load_structtimeseries модель, можно использовать записанную в журнал структуру без изменения. Загрузка данных для bus1, назначать bus1 в переменную inputBus.

inputBus = bus1;

Симулируйте модель. Блоки Display показывают записанное значение 1 для a и 0 для b. Симуляция использует значения земли, когда вы не задаете данные для сигнала.

loadOut = sim('ex_load_structtimeseries');

Теперь загрузите данные, записанные в журнал для bus2. Имена сигналов в bus2 не совпадать с Simulink.Bus спецификация объекта для блока Inport в ex_load_structtimeseries модель. Измените данные в структуре, чтобы частично задать входные данные для шины. Затем используйте Simulink.SimulationData.createStructOfTimeseries для изменения имен в структуре в соответствии со спецификацией шины.

bus2 = logsout.get(2).Values;
bus2.d = [];
inputBus = bus2;
inputBus = Simulink.SimulationData.createStructOfTimeseries('bus',inputBus);

Симулируйте модель. Блоки Display показывают записанное значение 3 для a и 0 для b.

loadOut = sim('ex_load_structtimeseries');

Частично задайте данные шины с массивом ячеек данных Timeseries

Когда у вас есть timeseries данные, можно использовать Simulink.SimulationData.createStructOfTimeseries чтобы частично задать вход симуляции для шины, используя массив ячеек timeseries данные. Загрузите timeseries данные для d сигнала в bus2 как часть спецификации частичной шины для блока Inport в ex_load_structtimeseries модель. The PreLoadFcn коллбэк для ex_load_structtimeseries модель определяет Simulink.Bus объект, bus, который определяет тип данных для блока Inport.

d = logsout.get(2).Values.d;

inputBus = Simulink.SimulationData.createStructOfTimeseries('bus',...
    {d,[]});

Симулируйте модель. Блок Display для сигнальных a в ex_load_structtimeseries модель показывает данные, зарегистрированные в сигнале d от ex_log_structtimeseries модель. Блок Display для сигнальных b показывает 0.

loadOut = sim('ex_load_structtimeseries');

В этом примере показано, как использовать Simulink.SimulationData.createStructOfTimeseries функция для генерации входов симуляции для массива шин. Вы создаете timeseries данные путем симуляции одной модели. Затем вы создаете структуру входа, используя записанные данные для загрузки в массив шин в другой модели.

Создание timeseries Данные

Чтобы начать, откройте ex_log_structtimeseries модель.

open_system('ex_log_structtimeseries')

Модель создает две шины, bus1 и bus2, с использованием блоков Constant и Bus Creator. Сигналы названы a, b, c, и d. Создайте данные логгированной шины путем симуляции модели.

out = sim('ex_log_structtimeseries');

Область выхода out содержит Simulink.SimulationData.Dataset объект, logsout, с записанными данными. Вы можете получить доступ к bus1 и bus2 сигналы, использующие get функция. Данные для каждого сигнала находятся в Simulink.SimulationData.Signal Values объекта параметр. Вы можете получить доступ к элементам шины с помощью точки, за которой следует имя сигнала. bus1 - первый сигнал в Dataset объект и содержит сигналы a и b. bus2 содержит сигналы c и d.

logsout = out.logsout;

a = logsout.get(1).Values.a;
b = logsout.get(1).Values.b;
c = logsout.get(2).Values.c;
d = logsout.get(2).Values.d;

Загрузка строения модели

Откройте модель ex_structtimeseries_aob, который использует массив шин в качестве входных параметров.

open_system('ex_load_structtimeseries_aob')

Модель использует InAoB Блок Inport для загрузки входов симуляции. Блоки Selector выбирают шину из массива шин, а блоки Bus Selector выбирают сигналы для отображения в блоках Display.

Дважды кликните InAoB заблокировать и просмотреть панель Атрибуты сигнала (Signal Attributes) диалогового окна. Тип данных для блока устанавливается на шину с типом, заданным Simulink.Bus объект, bus. Параметр Port dimensions установлен в [2 1].

Вы можете увидеть определение для Simulink.Bus объект, bus, на вкладке Коллбэки в Model Explorer. Эта модель использует PreLoadFcn для определения объекта шины.

Откройте Model Configuration Parameters и посмотрите на параметр Input. Модель использует переменную inputAoB как вход.

Создайте массив входных входов симуляции шин

Использование Simulink.SimulationData.createStructOfTimeseries и данные, записанные в первом разделе, чтобы создать структуру для загрузки в качестве входов симуляции для массива шин. Задайте размерности следующим [2 1] для соответствия размерностям InAoB блок.

inputAoB = Simulink.SimulationData.createStructOfTimeseries('bus',...
    {a,b,c,d},[2 1]);

Когда вы симулируете модель, блоки Display показывают данные для сигналов a, b, c, и d зарегистрирован из ex_log_structtimeseries модель. Массив шин содержит две шины с сигналами a и b. Simulink.SimulationData.createStructOfTimeseries переименованные сигналы c и d для соответствия Simulink.Bus спецификация, используемая массивом шин.

inputAoB(2)
ans = 

  struct with fields:

    a: [1x1 timeseries]
    b: [1x1 timeseries]

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

aob_out = sim('ex_load_structtimeseries_aob');

В релизах перед R2016a, когда вы логгируете данные моделирования с помощью ModelDataLogs формат, данные шины хранятся как Simulink.TSArray объект. Вы не можете регистрировать данные с помощью ModelDataLogs формат с использованием релиза после R2016a. В этом примере записанные данные, logsout, был авторизован ModelDataLogs форматировать используя релиз перед R2016a. Переменная logsout содержит данные для одной шины, bus1.

logsout
logsout =
 
Simulink.ModelDataLogs (log_modeldatalogs):
  Name                   Elements  Simulink Class

  bus1                      2      TsArray

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

struct_of_ts = ...
Simulink.SimulationData.createStructOfTimeseries(logsout.bus1)
struct_of_ts = 

    const1_sig: [1x1 timeseries]
    const2_sig: [1x1 timeseries]

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

свернуть все

Имя Simulink.Bus объект, который задает атрибуты для данных в структуру output timeseries объекты. Когда вы хотите загрузить структуру timeseries объекты как вход симуляции для шины, busObj шина, которая определяет тип данных для блока Inport корневого уровня.

Simulink.SimulationData.createStructOfTimeseries проверяет входные timeseries атрибуты, включая тип данных и сложность по отношению к Simulink.Bus спецификация объекта. Когда имена элементов не совпадают между Simulink.Bus спецификация и входные timeseries данные, Simulink.SimulationData.createStructOfTimeseries переименовывает timeseries данные, соответствующие спецификации шины. Когда другие атрибуты не совпадают, функция возвращает ошибку.

Пример: 'MyInputBus'

Структура timeseries данные для использования при создании структуры output timeseries объекты согласно Simulink.Bus объект. Структура должна иметь ту же иерархию, что и Simulink.Bus объект.

Чтобы частично задать данные для шины, используйте [] в месте элемента шины необходимо использовать значения заземления.

Массив ячеек timeseries объекты, определяющие данные для структуры output timeseries объекты.

Чтобы частично задать данные для шины, используйте [] в месте элемента шины необходимо использовать значения заземления.

The Simulink.SimulationData.createStructOfTimeseries функция сопоставляет timeseries элементы массива ячеек в иерархию, заданную Simulink.Bus объект с использованием поиска глубина-первая.

Пример: {ts1,ts2,ts3}

Пример: {ts1,[],ts3}

Зависимости

Когда вы задаете dims аргумент, количество камер в массиве ячеек должно совпадать с количеством отдельных сигнальных элементов в Simulink.Bus объект умножается на продукт заданных измерений.

Размерности для массива timeseries структуры, заданные как вектор.

Когда вы задаете размерности как скаляр, nфункция создает 1-by- n массив.

Пример: [2,1]

Зависимости

Когда вы задаете dims аргумент, количество камер в массиве ячеек должно совпадать с количеством отдельных сигнальных элементов в Simulink.Bus объект умножается на продукт заданных измерений.

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

Simulink.TsArray объект.

В версиях до R2016a логгирование сигналов создает Simulink.TsArray объекты для хранения записанных данных шины. Используйте этот синтаксис, когда вы хотите использовать данные, записанные в журнал с помощью ModelDataLogs формат в версии перед R2016a, чтобы создать вход симуляции для шины.

Пример: myTsArrayObj

Выходные аргументы

свернуть все

Структура timeseries объекты с атрибутами, заданными Simulink.TsArray или Simulink.Bus вход. Можно загрузить структуру timeseries объекты как вход симуляции для шины.

Массив структур timeseries объекты с размерностями, заданными dims вход.

Введенный в R2013a