В этом примере показано, как создать и отформатировать данные, чтобы загрузить от базового рабочего пространства с помощью блока 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.