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