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

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

Исследуйте модель

Этот пример использует простую модель. Два блоков Из Рабочей Области загружают данные из базового рабочего пространства и отправляют эти данные в два блока Outport. Один блок From Workspace использует значения по умолчанию для всех настроек блоков, а другой сконфигурирован для загрузки данных для шины. Два блока Возможность в модели отображают данные, загруженные каждым блоком From Workspace. Модель также содержит несколько блоков Кнопки коллбэка, которые можно использовать для генерации данных в базовом рабочем пространстве с использованием различных форматов, поддерживаемых блоком Из Рабочей области.

Модель использует PreLoadFcn коллбэк для определения simin переменная с использованием timeseries формат и busin переменная с использованием структуры timeseries объекты, когда вы открываете модель. Используйте один из блоков Кнопки коллбэка, чтобы создать данные в желаемом формате перед симуляцией модели. Чтобы создать данные, щелкните, чтобы выбрать блок Callback Button и нажмите еще раз, чтобы запустить код. Вы можете просмотреть код для каждого блока Callback Button в диалоговом окне блока или Property Inspector.

Создайте данные времени и сигнала

Большинство форматов данных, поддерживаемых блоком From Workspace, в основном состоят из временного вектора в паре со значениями сигналов. Можно использовать Structure without time формат для загрузки только входных данных без соответствующих значений времени, что иногда требуется для дискретных симуляций. (Для получения дополнительной информации см. «Загрузка данных для тестирования дискретного алгоритма».) Этот пример создает и загружает десять секунд данных, которые представляют синусоида.

Чтобы создать равномерно разнесенную временной вектор, начните с массива, который отсчитывается от нуля до желаемого количества временных шагов минус один (для первого временного шага, который уже определен). Умножьте массив на требуемый интервал дискретизации. Наконец, транспонируйте полученную переменную времени так, чтобы она была вектором-столбцом, а не вектором-строкой.

sampleRate = 0.01;
numSteps = 1001;
time = sampleRate*[0:(numSteps-1)];
time = time';

Примечание

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

time = [startTime:stepSize:endTime]';
Получившийся временной вектор не эквивалентен вектору, созданному с использованием этого выражения:
time = stepSize*[startTime:(numSteps-1)]

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

Теперь создайте данные сигнала, используя sin функция. Этот пример создает синусоиду с периодом 3.

data = sin(2*pi/3*time);

Загрузка timeseries Данные

Simulink® загрузка и запись в журнал обычно используют MATLAB timeseries объекты для передачи данных временных рядов в и вне симуляций. Код для блока Callback Button маркирован Create timeseries data to load создает данные времени и сигнала, использует его, чтобы создать timeseries Объект и присвоения timeseries объект переменной загрузки simin.

sampleRate = 0.01;
numSteps = 1001;
time = sampleRate*[0:(numSteps-1)];
time = time';
data = sin(2*pi/3*time);
simin = timeseries(data,time);

Чтобы загрузить timeseries данные, можно запустить код, чтобы создать simin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create timeseries data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

Загрузка timetable Данные

MATLAB timetable объект является другим форматом, используемым для хранения данных временных рядов. Как следует из имени, данные форматируются как таблица. Когда вы загружаете данные с помощью timetable объект, timetable объект может содержать данные только в одном столбце для одного сигнала.

Код для блока Callback Button маркирован Create timetable data to load создает данные времени и сигнала, использует его, чтобы создать timetable Объект и присвоения timetable объект переменной загрузки simin. The timetable объект требует, чтобы входное время было datetime или duration вектор. Этот пример создает вектор длительности, secs, используя seconds функция.

sampleRate = 0.01;
numSteps = 1001;
time = sampleRate*[0:(numSteps-1)];
time = time';
data = sin(2*pi/3*time);
secs = seconds(time);
simin = timetable(secs,data);

Чтобы загрузить timetable данные, можно запустить код, чтобы создать simin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create timetable data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

Загрузка данных структуры

Блок From Workspace поддерживает загрузку данных для сигнала с помощью структуры, которая соответствует Structure или Structure with time форматы логгирования. Модель содержит блок Callback Button, который создает данные, соответствующие Structure with time формат. The Structure формат соответствует Structure with time формат, кроме Structure формат не имеет time поле.

Структура имеет два поля верхнего уровня, time и signals. Когда вы логгируете данные используя Structure with time формат, signals поле может быть массивом структур, которые содержат данные для нескольких сигналов. Когда вы загружаете данные с помощью Structure with time формат, signals поле может содержать только одну структуру с данными для одного сигнала. Структура для signals поле содержит values поле и должно содержать dimensions поле, когда сигнал не скаляром.

Код для блока Callback Button маркирован Create structure with time data to load создает данные времени и сигнала и использует их для построения структуры с необходимыми полями и иерархией. Код начинается с очистки любой существующей переменной с именем simin который может быть объектом с именами свойства, совпадающими с именами полей структуры.

clear simin;
sampleRate = 0.01;
numSteps = 1001;
time = sampleRate*[0:(numSteps-1)];
time = time';
data = sin(2*pi/3*time);
simin.time = time;
simin.signals.values = data;

Чтобы загрузить структурные данные, можно запустить код, чтобы создать simin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create structure data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

Когда вы загружаете данные для многомерного сигнала, добавьте еще одну строку кода, чтобы присвоить размерности сигнала simin.signals.dimensions. Когда данные сигнала скаляры, установите поле размерностей на 1, если вы его включите. Когда каждое значение сигналов является вектором-строкой, можно задать размеры следующим [1 n] или как n, где n количество столбцов. Когда каждое значение сигналов является M-by- N матрица, задайте значение поля размерностей как [M N].

Когда вы хотите загрузить входные данные симуляции без временных данных, используйте Structure формат, который не включает time и задайте желаемую частоту дискретизации в параметре Sample time. Для получения дополнительной информации смотрите Загрузку Данных для Тестирования Дискретного Алгоритма.

Загрузка данных массива

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

Код для блока Callback Button с именем Create array data to load создает данные времени и сигнала и объединяет два векторов-строк в массив.

sampleRate = 0.01;
numSteps = 1001;
time = sampleRate*[0:(numSteps-1)];
time = time';
data = sin(2*pi/3*time);
simin = [time,data];

Чтобы загрузить данные массива, можно запустить код, чтобы создать simin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create array data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

Загрузка данных шины

Когда вы загружаете данные шины с помощью блока From Workspace, необходимо задать параметр Output data type как Simulink.Bus объект, который определяет шину. Блок From Workspace, который загружает данные шины, имеет Output data type настройку, заданную как Bus: SinusoidBus. The PreLoadFcn коллбэк для модели и кода для Create bus data to load Callback Button блокируйте оба задайте SinusoidBus объект.

A Bus объект задает иерархию шины, а также свойства элементов шины, таких как имя и тип данных. The Bus объект в этом примере задает иерархию шины, имена для сигналов, содержащихся в шине, и тип данных для вложенной шины. Шина, SinusoidBus, содержит один сигнал, Cosine, и вложенная шина SineBus, который содержит два сигнала, Sine и BigSine.

elems(1) = Simulink.BusElement;
elems(1).Name = 'Sine';
elems(2) = Simulink.BusElement;
elems(2).Name = 'BigSine';
SineBus = Simulink.Bus;
SineBus.Elements = elems;

clear elems;
elems(1) = Simulink.BusElement;
elems(1).Name = 'SineBus';
elems(1).DataType = 'Bus: SineBus';
elems(2) = Simulink.BusElement;
elems(2).Name = 'Cosine';
SinusoidBus = Simulink.Bus;
SinusoidBus.Elements = elems;
Для получения дополнительной информации об определении автобусов с Simulink.Bus объекты, см. «Задание свойств шины с Simulink типами данных объектов .Bus».

The Create bus data to load Callback Button блок создает структуру timeseries объекты с иерархией и именами полей, которые совпадают с иерархией и именами элементов SinusoidBus объект. Можно также создать структуру timetable объекты для загрузки в качестве входных данных для шины.

sampleRate = 0.01;
numSteps = 1001;

time = sampleRate*[0:(numSteps-1)];
time = time';

data = sin(2*pi/3*time);
cosdata = cos(2*pi/3*time);
ampdata = 2*data;

busin.Cosine = timeseries(cosdata,time);
busin.SineBus.Sine = timeseries(data,time);
busin.SineBus.BigSine = timeseries(ampdata,time);

Чтобы загрузить данные шины, можно запустить код, чтобы создать busin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create bus data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

Загрузка частично заданных данных шины

Когда вы загружаете входные данные для шины, используя блок From Workspace, вам не нужно предоставлять данные для каждого элемента шины. Чтобы частично задать входные данные для шины, можно опустить соответствующее поле в структуре или указать его значение следующим [].

The Create partially specified bus data to load Callback Button блок создает структуру timeseries объекты с иерархией и именами полей, которые совпадают с иерархией и именами элементов SinusoidBus объект. Он не задает данные для Cosine элемент шины.

sampleRate = 0.01;
numSteps = 1001;

time = sampleRate*[0:(numSteps-1)];
time = time';

data = sin(2*pi/3*time);
ampdata = 2*data;

busin.Cosine = [];
busin.SineBus.Sine = timeseries(data,time);
busin.SineBus.BigSine = timeseries(ampdata,time);

Чтобы загрузить данные шины, можно запустить код, чтобы создать busin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create partially specified bus data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

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

Загрузка массива данных шин

Когда вы используете блок From Workspace для загрузки данных для массива шин, необходимо задать параметр Output data type как Simulink.Bus объект, который задает шины, содержащиеся в массиве шин. Все шины в массиве шин должны быть определены одним и тем же Simulink.Bus объект. Блок From Workspace, который загружает данные для массива шин, имеет Output data type, установленную на Bus: SinusoidBus. Для получения дополнительной информации об определении Bus объект, см. Загрузка данных шины.

The Create array of buses data to load Callback Button блок создает массив, который содержит две структуры timeseries объекты с иерархией и именами полей, которые совпадают с иерархией и именами элементов SinusoidBus объект. Вторая структура, bus2, использует те же данные, что и первые, сдвинутые вниз на единицу, так что вы можете увидеть все шесть сигналов на блоке Dashboard Scope.

sampleRate = 0.01;
numSteps = 1001;

time = sampleRate*[0:(numSteps-1)];
time = time';

data = sin(2*pi/3*time);
cosdata = cos(2*pi/3*time);
ampdata = 2*data;

bus1.Cosine = timeseries(cosdata,time);
bus1.SineBus.Sine = timeseries(data,time);
bus1.SineBus.BigSine = timeseries(ampdata,time);

bus2.Cosine = timeseries((cosdata-1),time);
bus2.SineBus.Sine = timeseries((data-1),time);
bus2.SineBus.BigSine = timeseries((ampdata-1),time);

busin = [bus1,bus2];

Чтобы загрузить массив данных шин, можно запустить код, чтобы создать busin загрузка переменной в Командное Окно MATLAB или выберите затем нажмите Create array of buses data to load Callback Button блок. Затем симулируйте модель и просмотрите загруженные данные на блоке Dashboard Scope.

См. также

Блоки

Объекты

Похожие темы