В этом разделе описывается, как программное обеспечение оценивает выходные данные оценщиков нелинейности и использует эти выходные данные для вычисления отклика модели Хаммерштейна-Винера.
Оценка выхода нелинейности для входа 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 F и H являются векторами длины nu и ny соответственно. nu - количество входов, а ny - количество выходов. В этом случае прогнозируемый выход каждой нелинейности должен оцениваться отдельно.
Например, предположим, что вы оцениваете модель с двумя входами:
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 является wavenet объект и F2 является 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 одинаковые.