Simulink. SimulationData.createStructOfTimeseries

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

Синтаксис

tsStruct = Simulink.SimulationData.createStructOfTimeseries(busObj,tsStructIn)
tsStruct = Simulink.SimulationData.createStructOfTimeseries(busObj,tsCellArray)
tsStructArray = Simulink.SimulationData.createStructOfTimeseries(busObj,tsCellArray,dims)
tsStruct = Simulink.SimulationData.createStructOfTimeseries(tsArray)

Описание

пример

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

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

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

пример

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

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

Можно использовать этот синтаксис, чтобы создать вход симуляции, который полностью или частично задает данные для шины с помощью плоского списка объектов 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')

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

out = sim('ex_log_structtimeseries');

Просмотрите данные в переменной 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 Inport, чтобы загрузить данные о входной шине. Блок Селектора Шины выбирает сигналы из шины, чтобы отобразиться демонстрирующийся блоки.

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

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

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

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

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

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

  struct with fields:

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

Когда вы моделируете модель, блоки Отображения показывают значения, 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]

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

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

Создайте данные timeseries

Во-первых, откройте и моделируйте модель ex_log_structtimeseries. Модель регистрирует два сигнала шины, bus1 и bus2, созданное использование блоки Константа и блоки Создателя Шины. Доступ к Dataset logsout в объекте 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 = [];

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

inputBus = bus1;

Моделируйте модель. Блоки Отображения показывают регистрируемому значению 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);

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

loadOut = sim('ex_load_structtimeseries');

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

Когда у вас есть данные timeseries, можно использовать Simulink.SimulationData.createStructOfTimeseries, чтобы частично задать вход симуляции для шины с помощью массива ячеек данных timeseries. Загрузите данные timeseries для d сигнала в bus2 как часть частичной спецификации шины для блока Inport в модели ex_load_structtimeseries. Коллбэк 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, с помощью блоков Константа и блоков Создателя Шины. Сигналы называют 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, чтобы загрузить вход симуляции. Селекторные блоки выбирают шину из массива шин и сигналы выбора блоков Селектора Шины показать в блоках Отображения.

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

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

Откройте Образцовые Параметры конфигурации и посмотрите на Входной параметр. Модель использует переменную inputAoB в качестве входа.

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

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

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

Когда вы моделируете модель, блоки Отображения показывают данные для сигналов 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, который задает атрибуты для данных в выходной структуре объектов timeseries. Когда это необходимо, чтобы загрузить структуру объектов timeseries как вход симуляции для шины, busObj является шиной, которая задает тип данных для блока Inport корневого уровня.

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

Пример: 'MyInputBus'

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

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

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

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

Функция 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