Как программное обеспечение вычисляет модель Хаммерстайна-Винера Выход

Эта тема описывает, как программное обеспечение оценивает выход средств оценки нелинейности и использует этот выход, чтобы вычислить ответ модели Хаммерстайна-Винера.

Оценка нелинейности (SISO)

Оценка выхода нелинейности для входа u требует, чтобы вы сначала извлекли нелинейность ввода или вывода из модели:

F = M.InputNonlinearity; 
H = M.OutputNonlinearity;

Оцените F (u):

w = evaluate(F,u)

где u скаляр, представляющий значение входного сигнала в установленный срок.

Можно оценить выход в моменты нескольких времени путем оценки F для нескольких временных стоимостей одновременно с помощью вектор-столбца входных значений:

w = evaluate(F,[u1;u2;u3])

Точно так же можно оценить значение нелинейности H с помощью выхода линейного блока x (t) как его вход:

y = evaluate(H,x)

Оценка нелинейности (MIMO)

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

Например, предположите, что вы оцениваете 2D входную модель:

M = nlhw(data,[nb nf nk],[wavenet;poly1d],'saturation')

Во входной нелинейности:

F = M.InputNonlinearity
F1 = F(1);
F2 = F(2);

F вектор-функция, содержащая два элемента: F=[F1(u1_value);F2(u2_value)], где F1 isa wavenet объект и F2 isa poly1d объект. u1_value первый входной сигнал и u2_value второй входной сигнал.

Оцените F путем оценки F1 и F2 отдельно:

w1 = evaluate(F(1),u1_value);
w2 = evaluate(F(2),u2_value);

Общие затраты с линейным блоком, w, вектор из w1 и w2 (w = [w1 w2]).

Точно так же можно оценить значение нелинейности H:

H = M.OutputNonlinearity;

Симуляция модели Хаммерстайна-Винера

В этом примере показано, как программное обеспечение оценивает симулированный выход первым вычислением выхода средств оценки нелинейности ввода и вывода.

Оцените модель Хаммерстайна-Винера.

load twotankdata
estData = iddata(y,u,0.2);
M = nlhw(estData,[1 5 3],'pwlinear','poly1d');

Извлеките входную нелинейность, линейную модель, и выведите нелинейность как отдельные переменные.

uNL = M.InputNonlinearity;
linModel = M.LinearModel;
yNL = M.OutputNonlinearity;

Симулируйте выход входного средства оценки нелинейности.

Входные данные для симуляции

u = estData.u;

Вычислите выход входной нелинейности

w = evaluate(uNL,u);

Вычислите ответ линейной модели к входу w и нулевые начальные условия.

x = sim(linModel,w);

Вычислите выход модели M Хаммерстайна-Винера как выход выходного средства оценки нелинейности к входу x.

y = evaluate(yNL,x);

Предыдущий набор команд эквивалентен прямой симуляции выхода M использование sim команда.

ysim = sim(M,u);

Постройте y и ysim, ручные и прямые результаты симуляции, соответственно.

time = estData.SamplingInstants;
plot(time,y,'b',time,ysim,'--r');
xlabel('Time');
ylabel('Simulated Output')

График показывает тот y и ysim то же самое.

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

Похожие темы