Загрузите данные Используя от блока рабочей области

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

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

Этот пример использует простую модель. Два От блоков Рабочей области загружают данные из базового рабочего пространства и отправляют те данные в два блока Выходного порта. Один блок From Workspace использует значения по умолчанию для всех настроек блока, и другой сконфигурирован, чтобы загрузить данные для шины. Два блока Осциллографа Инструментальной панели в модели отображают данные, загруженные каждым блоком 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.

Загрузка расписания Данные

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

Код для блока Callback Button пометил Create timetable data to load создает время и данные сигнала, использование это, чтобы создать timetable объект и присвоения timetable возразите против переменной simin загрузки. 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 формат. 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- 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. PreLoadFcn коллбэк для модели и кода для Create bus data to load Блок Callback Button оба задает SinusoidBus объект.

Bus объект задает иерархию шины, а также свойства элементов в шине, таких как имя и тип данных. 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 объекты, смотрите Specify Bus Properties с Типами данных Object Simulink.Bus.

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, вы не должны обеспечивать данные для каждого элемента шины. Чтобы частично задать входные данные для шины, можно не использовать соответствующее поле в структуре или задать ее значение как [].

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.

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

Загрузите массив данных о шинах

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

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.

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

Блоки

Объекты

Похожие темы