Преобразуйте записанные данные в формат набора данных

Преобразуйте данные рабочей области в набор данных

Этот пример показывает, как преобразовать данные timeseries MATLAB® в формат Dataset. myvdp_timeseries является моделью vdp с два К блокам Рабочей области, сконфигурированным для simout и данных регистрации simout1 в формате timeseries MATLAB. Рассмотрите использование процедуры как этот, если у вас есть модели, которые используют Для блоков Рабочей области к данным логов к формату timeseries MATLAB.

Используйте конструктора Simulink.SimulationData.Dataset, чтобы преобразовать данные timeseries MATLAB в формат Dataset и затем конкатенировать эти два набора данных.

  1. Начиная с модели vdp добавьте два К блокам Рабочей области к модели как показано.

  2. Установите параметр формата Сохранения обоих блоков. Установите Timeseries.

  3. Сохраните модель как myvdp_timeseries.

  4. Моделируйте модель.

    Данные логов моделирования с помощью К блокам Рабочей области.

  5. Доступ к формату журналирования сигнала, 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
  6. Преобразуйте данные timeseries MATLAB от обоих До блоков Рабочей области к Dataset.

    ds = Simulink.SimulationData.Dataset(simout);
    ds1 = Simulink.SimulationData.Dataset(simout1);

    ds является именем переменной первых данных блока To Workspace. ds1 является именем переменной вторых данных блока To Workspace.

  7. Конкатенация обоих наборов данных в 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.

  1. Начиная с модели vdp добавьте два К блокам Рабочей области к модели как показано.

  2. В параметре формата Сохранения обоих блоков выберите Structure.

  3. Включите журналирование сигнала для двух сигналов, собирающихся в два К блокам Рабочей области входить в систему формат Ds.

  4. Сохраните модель как myvdp_structure.

  5. Моделируйте модель.

    Данные логов моделирования с помощью К блокам Рабочей области.

  6. Преобразуйте данные структуры от обоих До блоков Рабочей области к Dataset.

    ds = Simulink.SimulationData.Dataset(simout);
    ds1 = Simulink.SimulationData.Dataset(simout1);

    simout является именем переменной первых данных блока To Workspace. simout1 является именем переменной вторых данных блока To Workspace.

    С преобразованием структуры без времени или массива, время запускается в t=0 и инкрементах 1.

  7. Получите значения первого элемента в ds.

    ds.get(1).Values.Time
    ans =
    
         0
         1
         2
         3
         .
         .
         .
        61
        62
        63
  8. Получите временные стоимости первого элемента от журналирования сигнала.

    logsout.get(1).Values.Time
    ans =
    
             0
        0.0001
        0.0006
        0.0031
        .
        .
        .
       19.2802
       19.6802
       20.0000
  9. Наблюдайте несоответствие в метках времени между

    • Данные вошли в систему структура без времени, когда вы преобразовываете в формат Dataset

    • Данные вошли в систему формат Dataset

Программно доступ к регистрируемым данным формата набора данных

Когда вы используете сигнал Dataset по умолчанию журналирование формата, Simulink® сохраняет данные журналирования в объекте Simulink.SimulationData.Dataset. Для получения информации об извлечении данных сигнала от того объекта смотрите страницу с описанием Simulink.SimulationData.Dataset.

Объект Simulink.SimulationData.Dataset содержит объект Simulink.SimulationData.Signal для каждого регистрируемого сигнала.

Для сигналов шины объект Simulink.SimulationData.Signal содержит структуру MATLAB объекты timeseries.

Класс Simulink.SimulationData.Dataset предоставляет два метода для доступа к данным регистрации сигнала и ее связанной информации.

Имя

Описание

Simulink.SimulationData.DataSet.get

Можно также использовать метод getElement, который совместно использует синтаксис и поведение как метод get.

Получите элемент или набор элементов от набора данных, на основе индекса, имени или блока path.

Simulink.SimulationData.DataSet.numElements

Получите число элементов в наборе данных.

Например, доступа к регистрации сигнала данных, который использует формат Dataset, смотрите Simulink.SimulationData.Dataset.

Доступ к массиву сигнала шин регистрация данных

Данные регистрации сигнала для массива шин используют сигнал Dataset журналирование формата.

Общий подход, чтобы получить доступ к данным для определенного сигнала в массиве шин:

  1. Используйте Simulink.SimulationData.Dataset.get (или getElement) метод, чтобы получить доступ к определенному сигналу в записанных данных (по умолчанию, переменная logsout).

  2. Чтобы получить значения, индексируйте в массиве шин.

  3. Индексируйте снова, чтобы получить данные для определенной шины.

Например, чтобы получить данные регистрации сигнала для блока 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.

    1. В модели щелкните правой кнопкой по сигналу.

    2. В контекстном меню выберите Properties.

    3. В диалоговом окне Signal Properties, определенном имени Журналирования к Custom и задают другое имя, чем имя сигнала.

    4. Моделируйте модель и используйте метод Simulink.SimulationData.Dataset.getElement с аргументом имени.

Совет

Также можно использовать Селектор Журналирования Сигнала, чтобы получить доступ к определенному сигналу. Для получения дополнительной информации смотрите Сигнал Переопределения Регистрировать Настройки с Селектором Журналирования Сигнала.

Обработка символов новой строки в данных регистрации сигнала

Чтобы обработать символы новой строки в журналировании имен в данных регистрации сигнала, который использует формат Dataset, используйте команду sprintf в вызове getElement. Например:

topOut.getElement(sprintf('INCREMENT\nBUS'))

Смотрите также

Связанные примеры

Больше о

Была ли эта тема полезной?