Issue with Sigmoidnet input function

조회 수: 1 (최근 30일)
Sharmila Biswas
Sharmila Biswas 2019년 9월 16일
This is the code I am using for generating the predicted output ('yo' as mentioned in the code) from given input ('u' as mentioned in the code) and output ('y' as mentioned in the code). Though I am getting 100% data fitting during training, the trained parametric sigmoidnet model ('sys' as mentioned in the code) is predicting completely different output from the same data used for training. Can soemone please help to find out bugs in the code if there are any? Furthermore, is there any alternative method to generate predicted output from given input using sigmoidnet function?
The code is written below:
data=iddata(y,u);
sys = nlarx(data,[2 2 1],sigmoidnet('NumberOfUnits',3))
% u is the input to the model
% y is true output of the model
% x is the regressor value vector, na=nb=2 and nk=1, so number of
% regressor=4
% yo is the predicted output
P = sys.Nonlinearity.Parameters.LinearSubspace;
r = sys.Nonlinearity.Parameters.RegressorMean;
L = sys.Nonlinearity.Parameters.LinearCoef;
Q = sys.Nonlinearity.Parameters.LinearSubspace;
b = sys.Nonlinearity.Parameters.Dilation;
c = sys.Nonlinearity.Parameters.Translation;
a = sys.Nonlinearity.Parameters.OutputCoef;
d = sys.Nonlinearity.Parameters.OutputOffset;
yo = [];
for i=1:size(u,1)
x= zeros(1,4);
if i==1
x(1)=0;
x(2)=0;
x(3)=0;
x(4)=0;
elseif i==2
x(1)=data.y(i-1);
x(2)=0;
x(3)=data.u(i-1);
x(4)=0;
else
x(1)=data.y(i-1);
x(2)=data.y(i-2);
x(3)=data.u(i-1);
x(4)=data.u(i-2);
end
y_element = (x-r)*P*L + a(1)*1/(exp(-((x-r)*Q*b(:,1) + c(1)) +1)) ...
+ a(2)*1/(exp(-((x-r)*Q*b(:,2) + c(2)) +1)) ...
+ a(3)*1/(exp(-((x-r)*Q*b(:,3) + c(3)) +1)) ...
+ d;
disp(y_element)
yo = [yo; y_element];
end
% Final predicted output for display
out_predict = yo;

답변 (0개)

카테고리

Help CenterFile Exchange에서 Nonlinear ARX Models에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by