exponenta event banner

addElement

Класс: Simulink. SimulationData. Набор данных
Пакет: Simulink. SimulationData

Добавление элемента в конец объекта Dataset

Синтаксис

dataset = addElement(dataset,element)
dataset = addElement(dataset,element,name)

Описание

dataset = addElement(dataset,element) добавляет элемент к Simulink.SimulationData.Dataset набор данных.

dataset = addElement(dataset,element,name) добавляет элемент к Simulink.SimulationData.Dataset и дает элементу имя, указанное с помощью name аргумент. Если у объекта уже есть имя, элемент использует имя, указанное с помощью name аргумент.

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

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

Набор данных для добавления элемента.

Элемент для добавления в набор данных, указанный как Simulink.SimulationData.Signal, Simulink.SimulationData.DataStoreMemory, или matlab.io.datastore.SimulationDatastore объект.

Имя элемента, указанное как символьный вектор.

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

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

Набор данных, к которому добавляется элемент, возвращается в виде символьного вектора. Новый элемент добавляется в конец набора данных.

Примеры

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

Создайте набор данных и добавьте в него три элемента.

time = 0.1*(0:100)';
ds = Simulink.SimulationData.Dataset;
element1 = Simulink.SimulationData.Signal;
element1.Name = 'A';
element1.Values = timeseries(sin(time),time);
ds = addElement(ds,element1);
element2 = Simulink.SimulationData.Signal;
element2.Name = 'B';
element2.Values = timeseries(2*sin(time),time);
ds = addElement(ds,element2);
element3 = Simulink.SimulationData.Signal;
element3.Name = 'C';
element3.Values = timeseries(3*sin(time),time);
ds = addElement(ds,element3);
ds
ds = 

Simulink.SimulationData.Dataset '' with 3 elements

                         Name  BlockPath 
                         ____  _________ 
    1  [1x1 Signal]      A     ''       
    2  [1x1 Signal]      B     ''       
    3  [1x1 Signal]      C     ''       

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

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

Создать данные

Создание данных в рабочей области. Инспектор данных моделирования поддерживает данные временных рядов во многих форматах. В этом примере создаются данные с помощью timeseries и Simulink.SimulationData.Dataset форматирует и сохраняет данные в MAT-файле.

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

time = 0:0.2:20;

sine_vals = sin(2*pi/5*time);
sine_ts = timeseries(sine_vals,time);
sine_ts.Name = 'Sine, T=5';

cos_vals = cos(2*pi/8*time);
cos_ts = timeseries(cos_vals,time);
cos_ts.Name = 'Cosine, T=8';

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

sinusoids_ds = Simulink.SimulationData.Dataset;
sinusoids_ds = addElement(sinusoids_ds,cos_ts);
sinusoids_ds = addElement(sinusoids_ds,sine_ts);

Масштабировать каждый сигнал на коэффициент 2 и создать Dataset объект, содержащий данные сигнала для результатов.

doubSine = 2*sine_ts;
doubCos = 2*cos_ts;

doubSinusoids_ds = Simulink.SimulationData.Dataset;
doubSinusoids_ds = addElement(doubSinusoids_ds,doubSine);
doubSinusoids_ds = addElement(doubSinusoids_ds,doubCos);

Наконец, сохраните timeseries данные в MAT-файл.

save sinusoids.mat sine_ts cos_ts

Открытие инспектора данных моделирования

Для просмотра создаваемых в каждом разделе участков откройте инспектор данных моделирования, введя Simulink.sdi.view в окне команд MATLAB™.

Создание прогона с помощью Simulink.sdi.Run Объект

Можно импортировать данные в прогон в инспекторе расчетных данных, создав пустой прогон, а затем добавив данные в прогон из рабочей области или файла. В зависимости от задачи можно использовать Simulink.sdi.Run.create функции или Simulink.sdi.createRun для создания пустого прогона. Simulink.sdi.Run.create функция возвращает Simulink.sdi.Run для нового прогона и Simulink.sdi.createRun функция возвращает идентификатор прогона для нового прогона.

В этом примере создается пустой прогон с помощью Simulink.sdi.Run.create функция дает прогону значимое имя и описание, а затем добавляет синус и косинус timeseries данные с использованием add функция.

sinusoidsRun = Simulink.sdi.Run.create;
sinusoidsRun.Name = 'Sinusoids';
sinusoidsRun.Description = 'Sine and cosine signals of different frequencies';

add(sinusoidsRun,'vars',sine_ts,cos_ts)

В этом примере используется Simulink.sdi.createRun создание нового прогона в инспекторе данных моделирования My Waves а затем использует Simulink.sdi.addToRun функция для добавления синуса и косинуса timeseries данных в прогон.

runID = Simulink.sdi.createRun('My Waves');
signalID = Simulink.sdi.addToRun(runID,'vars',sine_ts,cos_ts);

Создание прогона из переменной рабочей области

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

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

runID = Simulink.sdi.createRun(sine_ts);

Simulink.sdi.createRun функция возвращает идентификатор прогона для создаваемого им прогона. Вы можете использовать Simulink.sdi.getRun для доступа к Run объект для прогона.

sineRun = Simulink.sdi.getRun(runID);
sineRun.Name
ans = 
'Sine, T=5'

Создание прогона из нескольких переменных рабочей области

Если данные существуют в нескольких переменных в рабочей области, можно использовать Simulink.sdi.createRun функции с помощью vars позволяет импортировать данные из нескольких переменных в один прогон в инспекторе расчетных данных. Этот синтаксис можно также использовать для создания прогона для одной переменной с указанным именем.

В этом примере создается прогон с именем My Sinusoids который содержит данные для синуса и косинуса timeseries объекты.

runID = Simulink.sdi.createRun('My Sinusoids','vars',sine_ts,cos_ts);

Создание прогона и указание имен источников

Вы можете использовать namevalue вариант Simulink.sdi.createRun для создания прогона и указания имен сигналов в прогоне. Этот синтаксис может быть особенно полезен при импорте отдельных листовых сигналов из иерархических данных.

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

runID = Simulink.sdi.createRun('Waves','namevalue',{'Sinusoids',...
    'BigSinusoids'},{sinusoids_ds,doubSinusoids_ds});

Создание прогона из данных в файле

Вы также можете использовать Simulink.sdi.createRun для импорта данных в инспектор данных моделирования из файла. Используйте file для импорта данных в simusoids.mat файл.

runID = Simulink.sdi.createRun('Wave Data','file','sinusoids.mat');

Альтернатива

Для оптимизации синтаксиса индексирования можно использовать фигурные скобки ({}) для добавления элемента в набор данных вместо использования addElement. Для индекса используйте скаляр, который больше числа элементов на единицу. Новый элемент становится последним элементом набора данных.

time = 0.1*(0:100)';
ds = Simulink.SimulationData.Dataset;
element1 = Simulink.SimulationData.Signal;
element1.Name = 'A';
element1.Values = timeseries(sin(time),time);
ds{1} = element1;
element2 = Simulink.SimulationData.Signal;
element2.Name = 'B';
element2.Values = timeseries(2*sin(time),time);
ds{2} = element2;
element3 = Simulink.SimulationData.Signal;
element3.Name = 'C';
element3.Values = timeseries(3*sin(time),time);
ds{3} = element3;
Представлен в R2011a