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