exponenta event banner

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

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

В этом примере показано, как преобразовать данные временных рядов MATLAB ® вDataset формат. myvdp_timeseries является vdp модель с двумя блоками To Workspace, настроенными для simout и simout1 регистрации данных во временном формате MATLAB. Рекомендуется использовать процедуру, подобную этой, если существуют модели, использующие блоки В рабочую область (To Workspace) для регистрации данных в формате временных рядов MATLAB.

Используйте Simulink.SimulationData.Dataset конструктор для преобразования данных временных рядов 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. Преобразование данных временных рядов MATLAB из обоих блоков В рабочую область в Dataset.

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

    ds - имя переменной первого блока «В рабочую область». ds1 - имя переменной второго блока «В рабочую область».

  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 модель с двумя блоками To Workspace, настроенными для simout и simout1 регистрации данных в структурном формате, как показано на рисунке.

Если существуют модели, использующие блоки В рабочую область (To Workspace) для регистрации данных в структурном формате, попробуйте использовать такую процедуру, как эта, чтобы преобразовать их в Dataset формат.

  1. Начиная с vdp добавьте в модель два блока «В рабочее пространство», как показано на рисунке.

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

  3. Включение регистрации сигналов для двух сигналов, поступающих в два блока To Workspace для входа в систему Ds формат.

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

  5. Моделирование модели.

    Моделирование регистрирует данные с помощью блоков «В рабочую область».

  6. Преобразование данных структуры из обоих блоков В рабочую область в Dataset.

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

    simout - имя переменной первого блока «В рабочую область». simout1 - имя переменной второго блока «В рабочую область».

    При преобразовании структуры без времени или массива время начинается с 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 класс предоставляет два метода доступа к данным регистрации сигналов и связанной с ними информации.

Имя

Описание

get

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

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

numElements

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

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

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

Данные регистрации сигналов для массива шин Dataset формат регистрации сигналов.

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

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

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

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

Например, для получения данных регистрации сигнала для блока Constant6 в ex_log_nested_aob модель, для topBus сигнал, который подает блок терминатора:

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 с аргументом индекса.

  • Диалоговое окно «Свойства сигнала» используется для указания другого имени. Рекомендуется использовать этот подход, когда сигналы с повторяющимся именем не появляются в нескольких экземплярах ссылочной модели в обычном режиме.

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

    2. В контекстном меню выберите «Свойства».

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

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

Совет

Кроме того, для доступа к определенному сигналу можно использовать селектор регистрации сигналов. Дополнительные сведения см. в разделе Переопределение параметров регистрации сигналов с помощью селектора регистрации сигналов.

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

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

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

См. также

Связанные темы