exponenta event banner

Simulink. SimulationData.createStructOfTimeseries

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

Описание

пример

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

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

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

open_system('ex_log_structtimeseries')

Для построения двух шин модель использует блоки Constant и Bus Creator, 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 Блок ввода для загрузки данных входной шины. Блок выбора шины выбирает сигналы от шины для отображения на блоках отображения.

Дважды щелкните значок InBus и проверьте его тип данных на вкладке «Атрибуты сигнала» диалогового окна. Тип данных определяется Simulink.Bus вызываемый объект bus.

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

Откройте окно Параметры конфигурации (Configuration Parameters) и просмотрите спецификацию для параметра Ввод (Input) на панели Импорт/экспорт данных (Data Import/Export). Модель использует переменную 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, созданный с использованием блоков 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 = [];

ex_load_structtimeseries модель использует переменную inputBus в качестве его входных данных. 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 данные, вы можете использовать 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,[]});

Моделирование модели. Блок отображения сигнала a в ex_load_structtimeseries модель показывает зарегистрированный сигнал d от ex_log_structtimeseries модель. Блок отображения сигнала 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 Ввод блока для загрузки входных данных моделирования. Блоки селекторов выбирают шину из массива шин, а блоки селекторов шин выбирают сигналы для отображения в блоках отображения.

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

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

Откройте окно Параметры конфигурации модели (Model Configuration Parameters) и просмотрите входной параметр. Модель использует переменную 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 - шина, определяющая тип данных для блока ввода корневого уровня.

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около-n массив.

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

Зависимости

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

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

Simulink.TsArray объект.

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

Пример: myTsArrayObj

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

свернуть все

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

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

Представлен в R2013a