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

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

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

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

Модель использует PreLoadFcn коллбэк к:

  • Создайте timeseries данные хранимы в переменной simin.

  • Создайте структуру timeseries объекты хранятся в переменной busin.

  • Создайте Simulink.Bus объект, который задает тип выходных данных для блока From Workspace, который загружает данные для шины.

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

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

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

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

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

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

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

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

Загрузите timeseries Данные

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

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(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 должен только содержать данные в одном столбце, для одного сигнала.

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

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(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 логгирование форматов. В этом примере показано, как создать данные, которые совпадают с 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;
sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(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 поле и задает желаемую частоту дискретизации с помощью параметра Шага расчета. Для получения дополнительной информации смотрите Данные о Загрузке, чтобы Протестировать Дискретный Алгоритм.

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

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

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

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(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, загружающие структуру, которая содержит timeseries объекты или расписания как входные данные для шины. Каждый timeseries объект или расписание могут содержать любой вид данных, поддержанных при загрузке данных из одного timeseries объект или расписание.

Когда вы загружаете входные данные для шины с помощью блока From Workspace, необходимо задать тип Выходных данных, устанавливающий как Simulink.Bus объект, который задает шину. Иерархия и имена полей в структуре, которая содержит данные о шине, должны совпадать с иерархией и именами элементов Bus объект, который задает тип выходных данных.

Блок From Workspace, который загружает данные о шине, имеет свою установку типа Выходных данных, сконфигурированную как Bus: SinusoidBus. PreloadFcn коллбэк для модели и кода для Create bus data to load Кнопка Callback оба задает 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 объект.

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

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

clear busin;
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 соедините шиной элемент.

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

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

clear busin;
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, чтобы загрузить данные для массива шин, необходимо задать параметр типа Выходных данных как Simulink.Bus объект, который задает шины массив шин, содержит. Все шины в массиве шин должны быть заданы тем же Simulink.Bus объект. Блок From Workspace, который загружает данные для массива шин, имеет свой набор типа Выходных данных к Bus: SinusoidBus. Для получения дополнительной информации об определении Bus возразите, смотрите Данные о Шине Загрузки.

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

sampleTime = 0.01;
numSteps = 1001;
time = sampleTime*(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.

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

Блоки

Объекты

Похожие темы