MATLAB: How to solve this problem

neural networkneural networks

Why does the outcome of this code:
function Ks = nn_ks(v, f, t)
for i=1:27
v=[80;80;80;80;80;80;80;80;80;150;150;150;150;150;150;150;150;150;220;220;220;220;220;220;220;220;220;]
f=[0.05;0.05;0.05;0.1;0.1;0.1;0.15;0.15;0.15;0.05;0.05;0.05;0.1;0.1;0.1;0.15;0.15;0.15;0.05;0.05;0.05;0.1;0.1;0.1;0.15;0.15;0.15;]
t=[5;10;15;5;10;15;5;10;15;5;10;15;5;10;15;5;10;15;5;10;15;5;10;15;5;10;15;]
v(i,1)=(v(i,1)-80)./(220-80)
f(i,1)=(f(i,1)-0.05)./(0.15-0.05)
t(i,1)=(t(i,1)-5)./(15-5)
X=[v(i,1); f(i,1); t(i,1)]
W1 = [0.83953 1.416 4.3197;
0.70603 -4.1921 -0.30888;
-3.1168 2.7796 0.75788]
B1=[-3.1521;
-0.45802;
-2.9756]
W2 =[0.70956 1.1833 -0.059955]
B2 =[-0.98502];
Y1 = logsig(W1*X + B1*ones(1,size(X,2)));
Y2 = purelin(W2*Y1 + B2*ones(1,size(Y1,2)));
Ks(i,1) =Y2.'
end
is very different from the outcome (outputs) of NN Toolbox when the same weights, biases, learning functions and algorithms are used?

Best Answer

% How can I solve this problem?
% Asked by Parwaz Ali about 6 hours ago
% Latest activity Commented on by Walter Roberson about 6 hours ago
% Why does the outcome of this code:
% function Ks = nn_ks(v, f, t)
% is very different from the outcome (outputs) of NN Toolbox when the same weights, biases, learning functions and algorithms are used?
Answer is below
Create column vectors w/o semicolons: columnvec = rowvec'
Avoid using the same variable name on both sides of an equation
Avoid unnecessary loops
close all, clear all, clc
V = [ 80 80 80 80 80 80 80 80 80 ...
150 150 150 150 150 150 150 150 150 ...
220 220 220 220 220 220 220 220 220 ];
F = [ 0.05 0.05 0.05 0.1 0.1 0.1 0.15 0.15 0.15 ...
0.05 0.05 0.05 0.1 0.1 0.1 0.15 0.15 0.15 ...
0.05 0.05 0.05 0.1 0.1 0.1 0.15 0.15 0.15 ] ;
T = [ 5 10 15 5 10 15 5 10 15 ...
5 10 15 5 10 15 5 10 15 ...
5 10 15 5 10 15 5 10 15 ] ;
X = [ V; F ; T ];
[ I N ] = size(X)
maxX = max(X')' * ones(1,N);
minX = min(X')' * ones(1,N);
x = ( X-minX)./(maxX-minX);
whos
W1 = [ 0.83953 1.416 4.3197;
0.70603 -4.1921 -0.30888;
-3.1168 2.7796 0.75788 ];
[ H I ] = size(W1)
b1 = [ -3.1521 -0.45802 -2.9756 ]'
B1 = b1*ones( 1,N);
W2 = [ 0.70956 1.1833 -0.059955 ];
[ O H ] = size(W2)
b2 = -0.98502 ;
h = logsig( W1*x + B1);
y = W2*h + b2;
No learning functions or algorithms were used here
MATLAB uses [-1,1] scaling, not [0,1]
Hope this helps,
Thank you for formally accepting my answer
Greg