Simulink.SimulationData.Dataset

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

Описание

Simulink.SimulationData.Dataset связанные с группами объектов данные. Регистрируемые результаты симуляции часто группируются в Dataset объекты. Можно также использовать Dataset возразите, чтобы сгруппировать входные данные симуляции, когда вы загружаете начальные состояния и когда вы загружаете внешние входные данные с помощью блоков Inport или блока Signal Editor.

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

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

Тип входаФорматы данных

Скаляр, вектор или многомерный сигнал

  • timeseries

  • timetable

  • Simulink.SimulationData.Signal

  • matlab.io.datastore.SimulationDatastore

  • matlab.io.datastore.sdidatastore

  • Структура с одним полем под названием signals.values это содержит данные для одного сигнала и поля под названием time это опционально включает данные времени

  • Массив, где первый столбец содержит данные времени и последующие столбцы, содержит данные для сигнала

Шина

  • Структура timeseriesрасписание, или matlab.io.datastore.SimulationDatastore объекты, который совпадает с иерархией шины

  • Simulink.SimulationData.Signal

Массив шин

  • Массив структур

  • Simulink.SimulationData.Signal

Сигнал вызова функции

  • N-by-1 вектор

  • Simulink.SimulationData.Signal

Создание

Логгирование данных моделирования часто создает Simulink.SimulationData.Dataset объект, включая когда вы:

  • Данные логов с помощью логгирования сигнала.

  • Регистрируйте выходные параметры, состояния или конечные состояния с помощью Dataset формат.

  • Хранилища данных логов.

  • Данные логов к рабочей области или файлу MAT с помощью блока Record.

  • Данные логов в Dataset формат с помощью блока Scope.

  • Данные логов с помощью Floating Scope или Scope Viewer.

Сгруппировать внешние входные данные для модели в Dataset объект, вы можете:

  • Создайте пустой Dataset возразите и добавьте входные данные с помощью addElement функция.

  • Используйте createInputDataset создать Dataset объект, который содержит элемент для каждого блока Inport корневого уровня или блока In Bus Element в модели. Затем задайте данные для каждого элемента.

  • Используйте Редактор Сигнала, чтобы в интерактивном режиме создать и отредактировать Dataset объекты, которые содержат входные данные симуляции. Для получения дополнительной информации смотрите, Создают и Данные сигнала Редактирования.

Можно также создать Dataset объект путем преобразования данных, которые используют другой формат, чтобы использовать Dataset формат. Наличие всех данных в распространенном формате может упростить постобработку. Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Формат Набора данных.

Описание

пример

ds = Simulink.SimulationData.Dataset создает пустой, Dataset без имени возразите, в который можно добавить элементы. Используйте этот синтаксис, чтобы вручную создать Dataset объект, который содержит внешние входные данные, чтобы загрузить использование блоки In Bus Element или Inport.

ds = Simulink.SimulationData.Dataset(dataToConvert) создает Dataset без имени объект, который содержит один или несколько элементов, которые содержат данные dataToConvert. Используйте этот синтаксис, чтобы преобразовать данные, которые используют другой формат, чтобы использовать Dataset формат. Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Формат Набора данных.

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

ds = Simulink.SimulationData.Dataset(dataToConvert,"DatasetName",dsName) создает Dataset объект с именем, заданным dsName это содержит один или несколько элементов, которые содержат данные dataToConvert. Используйте этот синтаксис, чтобы преобразовать данные, которые используют другой формат, чтобы использовать Dataset формат. Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Формат Набора данных.

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

развернуть все

Данные, чтобы преобразовать в Dataset формат в виде timeseries объект, timetable, структура, массив или Simulink.ModelDataLogs объект. Результаты преобразования зависят от формата входных данных.

Входные данныеРезультаты преобразования
timeseries объект или timetable

Dataset объект, который содержит один Simulink.SimulationData.Signal объект с timeseries или timetable данные в его Values свойство.

ModelDataLogs объект

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входном объекте.

Структура, которая совпадает с Structure with time логгирование формата.

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входной структуре.

Структура, которая совпадает с Structure логгирование формата

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входной структуре.

Поскольку вход не содержит данные времени, преобразование создает временной вектор для каждого сигнала, который запускается в 0 и использует интервал выборки 1.

Массив

Dataset объект, который содержит один Simulink.SimulationData.Signal объект. Values свойство Signal объект содержит timeseries объект и Data свойство timeseries объект содержит целый массив.

Поскольку вход не содержит данные времени, преобразование создает временной вектор для сигнала, который запускается в 0 использует интервал выборки 1.

Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Преобразование Формата и Набора данных Набора данных для Записанных данных.

Dataset имя объекта в виде строки или вектора символов.

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

развернуть все

Dataset объект, возвращенный как Simulink.SimulationData.Dataset объект. Dataset объект пуст, когда вы не задаете входные параметры. Создайте пустой Dataset возразите, когда это необходимо, против входных данных симуляции группы в одной переменной.

Когда вы задаете входные параметры, Dataset объект содержит один или несколько элементов, которые содержат входные данные. Результаты преобразования зависят от формата входных данных.

Входные данныеРезультаты преобразования
timeseries объект

Dataset объект, который содержит один Simulink.SimulationData.Signal объект с timeseries данные в его Values свойство.

ModelDataLogs объект

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входном объекте.

Структура, которая совпадает с Structure with time логгирование формата

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входной структуре.

Структура, которая совпадает с Structure логгирование формата

Dataset объект, который содержит один или несколько Simulink.SimulationData.Signal объекты, которые содержат данные для каждого сигнала во входной структуре.

Поскольку вход не содержит данные времени, преобразование создает временной вектор для каждого сигнала, который запускается в 0 и использует интервал выборки 1.

Массив

Dataset объект, который содержит один Simulink.SimulationData.Signal объект. Values свойство Signal объект содержит timeseries объект и Data свойство timeseries объект содержит целый массив.

Поскольку вход не содержит данные времени, преобразование создает временной вектор для сигнала, который запускается в 0 использует интервал выборки 1.

Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Преобразование Формата и Набора данных Набора данных для Записанных данных.

Свойства

развернуть все

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

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

Функции объекта

addElementДобавьте элемент в конец объекта Dataset
concatНабор данных Concatenate к другому набору данных
exportToPreviousReleaseСохраните Dataset возразите против MAT-файла, который можно открыть в любом релизе
extractTimetableИзвлеките данные из Simulink.SimulationData.Dataset или Simulink.SimulationData.Signal объекты в расписания
findПолучите элемент или набор элементов от набора данных
getПолучите элемент или набор элементов от набора данных
getElementNamesВозвратите имена всех элементов в наборе данных
numElementsПолучите число элементов в наборе данных
plotОтобразите данные на графике в Инспекторе Данных моделирования
setElementИзмените элемент, сохраненный в заданном индексе

Примеры

свернуть все

Регистрируйте выходные параметры vdp модель и доступ записанные данные.

Откройте модель. Сконфигурируйте выходное логгирование с помощью Dataset формат и симулирует модель с помощью sim функция.

open_system('vdp');
out = sim('vdp','SaveOutput','on','SaveFormat','Dataset');

Все записанные данные возвращены в одной переменной, out, как Simulink.SimulationOutput объект. SimulationOutput объект содержит Simulink.SimulationData.Dataset возразите что группы каждый вид записанных данных. Этот пример только регистрирует выходные параметры, таким образом, существует один Dataset объект, yout.

out
out = 
  Simulink.SimulationOutput:

                   yout: [1x1 Simulink.SimulationData.Dataset] 

     SimulationMetadata: [1x1 Simulink.SimulationMetadata] 
           ErrorMessage: [0x0 char] 

Доступ к Dataset объект, который включает регистрируемые выходные данные с помощью точки и имени Dataset объект. Dataset объект содержит Simulink.SimulationData.Signal объект для каждого выхода.

outputs = out.yout
outputs = 
Simulink.SimulationData.Dataset 'yout' with 2 elements

                         Name  BlockPath 
                         ____  _________ 
    1  [1x1 Signal]      x1    vdp/Out1 
    2  [1x1 Signal]      x2    vdp/Out2 

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

Signal объект имеет метаданные о сигнале, включая путь к блоку и индексу порта, который производит сигнал. Используйте getElement функционируйте, чтобы получить доступ к Signal объект, который содержит данные для x1 сигнала по наименованию. Можно также использовать фигурные скобки ({}) к элементам доступа в Dataset объект индексом.

outputX1 = getElement(outputs,'x1')
outputX1 = 
  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'x1'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'inport'
         PortIndex: 1
            Values: [1x1 timeseries]


  Methods, Superclasses

Данные сигнала хранятся в Values свойство Signal возразите как timeseries объект. Временные стоимости находятся в Time свойство timeseries объект. Значения сигналов находятся в Data свойство.

outputValsX1 = outputX1.Values
  timeseries

  Common Properties:
            Name: 'x1'
            Time: [64x1 double]
        TimeInfo: tsdata.timemetadata
            Data: [64x1 double]
        DataInfo: tsdata.datametadata
outputTimesX1 = outputValsX1.Time
outputTimesX1 = 64×1

         0
    0.0001
    0.0006
    0.0031
    0.0157
    0.0785
    0.2844
    0.5407
    0.8788
    1.2788
      ⋮

outputDataX1 = outputValsX1.Data
outputDataX1 = 64×1

    2.0000
    2.0000
    2.0000
    2.0000
    1.9998
    1.9943
    1.9379
    1.8155
    1.5990
    1.2687
      ⋮

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

outputDataX1 = getElement(out.yout,'x1').Values.Data
outputDataX1 = 64×1

    2.0000
    2.0000
    2.0000
    2.0000
    1.9998
    1.9943
    1.9379
    1.8155
    1.5990
    1.2687
      ⋮

Создайте данные для трех входных сигналов симуляции и сгруппируйте их в Dataset объект. Простая модель загружает содержимое Dataset объект с помощью трех Inport блоков корневого уровня. Блоки Осциллографа инструментальной панели в отображении модели каждый сигнал создали использование загруженных входных данных.

Во-первых, создайте данные сигнала, чтобы загрузить в модель. Используйте выражение в этом примере, чтобы создать равномерно распределенный временной вектор для входного сигнала, особенно при моделировании дискретных входных сигналов. MATLAB® поддерживает несколько других методов для создания равномерно распределенного вектора, но другие методы могут ввести погрешности округления с двойной точностью в данных времени, которые могут привести к неожиданным результатам симуляции.

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(0:numSteps-1);
time = time';

Создайте данные сигнала для сигнала синуса, сигнала косинуса и линейного сигнала.

sineVals = sin(2*pi/3*time);
cosVals = cos(2*pi/3*time);
lineVals = time;

Создайте timeseries объект содержать данные для каждого сигнала. Дайте каждый timeseries возразите описательному имени, таким образом, сигналы легко идентифицировать, если они сгруппированы в Dataset объект.

sineTS = timeseries(sineVals,time,'Name','Sine Wave');
cosTS = timeseries(cosVals,time,'Name','Cosine Wave');
lineTS = timeseries(lineVals,time,'Name','Line');

Создайте Dataset возразите и используйте addElement функция, чтобы добавить каждый timeseries возразите против Dataset объект.

inputData = Simulink.SimulationData.Dataset;
inputData.Name = 'inputData';
inputData = addElement(inputData,sineTS);
inputData = addElement(inputData,cosTS);
inputData = addElement(inputData,lineTS)
inputData = 
Simulink.SimulationData.Dataset 'inputData' with 3 elements

                             Name         BlockPath 
                             ___________  _________ 
    1  [1x1 timeseries]      Sine Wave    ''       
    2  [1x1 timeseries]      Cosine Wave  ''       
    3  [1x1 timeseries]      Line         ''       

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

Когда вы загружаете внешние входные данные с помощью Inport блоков корневого уровня, вы задаете данные, чтобы загрузить использование Входного параметра в Параметрах конфигурации Модели на панели Импорта/Экспорта Данных. Откройте модель LoadInputDataset и смотрите, что Входной параметр задан как inputData.

open_system('LoadInputDataset.slx');

Симулируйте модель. Блок Dashboard Scope, соединенный с первым Inport блоком, показывает сигнал синуса, блок Dashboard Scope, соединенный со вторым Inport блоком, показывает сигнал косинуса, и блок Dashboard Scope, соединенный с третьим Inport блоком, показывает линейный сигнал.

out = sim('LoadInputDataset.slx');

Можно подкачать порядок элементов в Dataset возразите и смотрите изменение, отраженное в том, как элементы сопоставлены с Inport блоками.

inputData{1} = lineTS;
inputData{3} = sineTS
inputData = 
Simulink.SimulationData.Dataset 'inputData' with 3 elements

                             Name         BlockPath 
                             ___________  _________ 
    1  [1x1 timeseries]      Line         ''       
    2  [1x1 timeseries]      Cosine Wave  ''       
    3  [1x1 timeseries]      Sine Wave    ''       

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

Симулируйте модель снова. Блок Dashboard Scope, который отображает первый элемент теперь, показывает линию, и блок Dashboard Scope, который отображает третий элемент, показывает синусоиду, отражая новый порядок элементов в Dataset объект.

out = sim('LoadInputDataset.slx');

Советы

  • Можно использовать фигурные скобки ({}) для доступа добавьте или измените элемент в Dataset объект индексом.

  • Для доступа добавьте или измените элемент Dataset возразите по наименованию, используйте getElement, addElement, и setElement функции.

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

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

  • Когда вы сохраняете данные в Dataset возразите против файла MAT, рассмотрите сохранение в файл MAT Версии 7.3 если содержимое Dataset объект является слишком большим, чтобы уместиться в памяти. Можно создать Simulink.SimulationData.DatasetRef это ссылается на Dataset объект в файле MAT, не загружая данные в память для обработки данных или для загрузки больших данных. Для получения дополнительной информации смотрите Загрузку Большие данные для Симуляций.

  • Сохранить Dataset возразите против файла MAT, что можно открыться в более раннем релизе, использовать exportToPreviousRelease функция вместо save функция.

  • Можно записать собственному читателю, чтобы импортировать данные из файла в Dataset объект в базовом рабочем пространстве, рабочем пространстве модели или Редакторе Сигнала с помощью Simulink.io.FileType класс. Для получения дополнительной информации смотрите, Создают Пользовательский Тип файла для Импорта, чтобы Сигнализировать о Редакторе.

Введенный в R2011a