Сгенерируйте данные с помощью симуляции

Команды для генерации данных с помощью симуляции

Можно сгенерировать входные данные, а затем использовать их с моделью для создания выходных данных.

Симуляция выходных данных требует, чтобы у вас была модель с известными коэффициентами. Для получения дополнительной информации о командах для построения моделей смотрите Команды для построения структур линейной модели.

Чтобы сгенерировать входные данные, используйте idinput создать сигнал с желаемыми характеристиками, такой как случайный Гауссов или двоичный сигнал или синусоида. idinput возвращает матрицу входа значений.

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

Команды для генерации данных

КомандаОписаниеПример
idinputСоздает сигнал с желаемыми характеристиками, такими как случайный Гауссов или двоичный сигнал или синусоида, и возвращает матрицу входа значений.
u = iddata([],...
    idinput(400,'rbs',[0 0.3])); 
simМоделирует данные отклика на основе существующей линейной или нелинейной параметрической модели в MATLAB® рабочей области.

Чтобы симулировать вывод модели y для заданного входа используйте следующую команду:

y = sim(m,data)

m - имя объекта модели, и data является матрицей входных данных или iddata объект.

Создание периодических входных данных

Этот пример показывает, как создать периодический случайный входной сигнал Гауссова с помощью idinput.

Создайте периодический вход для одного входа и состоящий из пяти периодов, где каждый период составляет 300 выборок.

per_u = idinput([300 1 5]);

Создайте iddata объект использует периодический вход и оставляет выход пустым.

u = iddata([],per_u,'Period',.300);

Смотрите характеристики данных во временной и частотной областях.

% Plot data in time-domain.
plot(u)
% Plot the spectrum.
spectrum(spa(u))

(Необязательно) Моделируйте выход модели с помощью данных.

% Construct a polynomial model.
m0 = idpoly([1 -1.5 0.7],[0 1 0.5]);
% Simulate model output with Gaussian noise.
sim_opt = simOptions('AddNoise',true);
sim(m0,u,sim_opt)

Сгенерируйте выходные данные с помощью симуляции

Этот пример показывает, как сгенерировать выходные данные путем симуляции модели с помощью входного сигнала, созданного с помощью idinput.

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

Создайте модель ARMAX с известными коэффициентами.

A = [1 -1.2 0.7];
B = {[0 1 0.5 0.1],[0 1.5 -0.5],[0 -0.1 0.5 -0.1]}; 
C = [1 0 0 0 0];
Ts = 1;   
m0 = idpoly(A,B,C,'Ts',1);

Начальные нули в B матрица указывает на входную задержку (nk), что 1 для каждого входного канала.

Создайте псевдослучайные двоичные входные данные.

u = idinput([255,3],'prbs');

Симулируйте выход модели с шумом с помощью входных данных.

y = sim(m0,u,simOptions('AddNoise',true));

Представьте данные моделирования как iddata объект.

iodata = iddata(y,u,m0.Ts);

(Необязательно) Оцените модель того же порядка, как m0 использование iodata.

na = 2;
nb = [3 2 3];
nc = 4;
nk = [1 1 1];
me = armax(iodata,[na,nb,nc,nk]);

Использование bode(m0,me) и compare(iodata,me) чтобы проверить, как тесно me и m0 соответствовать.

compare(iodata,me);

Figure contains an axes. The axes contains 2 objects of type line. These objects represent iodata (y1), me: 53.56%.

Симуляция данных с использованием других продуктов MathWorks

Можно также симулировать данные с помощью Simulink® и программное обеспечение Signal Processing Toolbox™. Данные, моделируемые вне продукта System Identification Toolbox™, должны быть в рабочем пространстве MATLAB в виде двойных матриц. Для получения дополнительной информации об симуляции моделей с помощью программного обеспечения Simulink, см. «Моделирование идентифицированной модели в Simulink».