📄 object_func.m
字号:
function [error,f,forecast]=object_func(Input_Num,Hidden_Num,Output_Num,w,x,y,Sample_Num,n,fmax,line);
%t=0:0.1:10;
%y = (t + 10*sin(5*t)+7*cos(4*t))';
%x=t';
%Sample_Num=101;
%Input_Num=1;
%Hidden_Num=3;
%Output_Num=1;
%w=rands(1,6);
%Input_Num输入层单元数
%Hidden_Num中间层单元数
%Output_Num输出层单元数
%x权值向量 1*n
%x输入值 Sample_Num*Input_Num
%y输 出 值 Sample_Num*Output_Num
%Sample_Num 样本量
%n 保留几位整数位
if n==1
w=w./10;
end
if n==2
w=w./100;
end
temp=Input_Num.*Hidden_Num;
a1=w(1:temp);
a2=w((temp+1):end);
reshape_a1=(reshape(a1,Hidden_Num,Input_Num))';
reshape_a2=(reshape(a2,Hidden_Num,Output_Num))';
for i=1:Input_Num;
for j=1:Hidden_Num;
w1(i,j)=reshape_a1(i,j);
end
end
for i=1:Output_Num;
for j=1:Hidden_Num;
wt2(i,j)=reshape_a2(i,j);
end
end
w2=wt2';
c=1;
len_expectlist=ceil(max(y)-min(y));
while (c<=Sample_Num)
for j=1:Hidden_Num
net=0.0;
for i=1:Input_Num
net=net+x(c,i)*w1(i,j);
end
yt(c,j)=1./(1+exp(-net)); % 非线 性 函 数
end
for k=1:Output_Num
net=0.0;
for j=1:Hidden_Num
net=net+yt(c,j)*w2(j,k);
end
if line==0
o(c,k)=len_expectlist./(1+exp(-net));
end
if line==1
o(c,k)=net;
end
end
c=c+1;
end
error_p=0;
for k=1:Output_Num
error_p=sum((y-o(:,k)).^2)+error_p;
end
error=sqrt((error_p)./(Output_Num.*Sample_Num)); %需要修改
f=exp(-error);
%f=10-(error).^2;
forecast=o;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -