📄 ptrnsimu.m
字号:
%此为一仿真程序
%首先读入权域值参数
function retdouble = PtrnSimu(ModelNo,NetPara,SimulatePara,InputFun,OutputFun,DataDir)
NNTWARN OFF
retdouble = -1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%测试用例数据
%ModelNo='1';
%输入节点数
%NetPara(1)=35;
%输出节点数
%NetPara(2)=26;
%中间层节数
%NetPara(3)=10;
%SimulatePara(1)=1;
%SimulatePara(2)=1;
%SimulatePara(3)=1;
%SimulatePara(4)=1;
%SimulatePara(5)=0;
%SimulatePara(6)=1;
%SimulatePara(7)=0;
%SimulatePara(8)=0;
%SimulatePara(9)=0;
%SimulatePara(10)=1;
%SimulatePara(11)=1;
%SimulatePara(12)=0;
%SimulatePara(13)=0;
%SimulatePara(14)=0;
%SimulatePara(15)=1;
%SimulatePara(16)=1;
%SimulatePara(17)=1;
%SimulatePara(18)=1;
%SimulatePara(19)=1;
%SimulatePara(20)=0;
%SimulatePara(21)=1;
%SimulatePara(22)=0;
%SimulatePara(23)=0;
%SimulatePara(24)=0;
%SimulatePara(25)=1;
%SimulatePara(26)=1;
%SimulatePara(27)=0;
%SimulatePara(28)=0;
%SimulatePara(29)=0;
%SimulatePara(30)=1;
%SimulatePara(31)=1;
%SimulatePara(32)=1;
%SimulatePara(33)=1;
%SimulatePara(34)=1;
%SimulatePara(35)=0;
%DataDir='.';
%InputFun = 'logsig';
%OutputFun = 'logsig';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
retdouble = -1;
olddir=pwd;
% 数据所在目录
cd(DataDir);
% 输入层到中间层的传递函数
if (length(InputFun)==0)
InputFun = 'logsig';
end
% 中间层到输出层的传递函数
if (length(OutputFun)==0)
OutputFun = 'logsig'
end
frw1=fopen(sprintf('w%s%s',ModelNo,'1.dat'),'r');
frb1=fopen(sprintf('b%s%s',ModelNo,'1.dat'),'r');
frw2=fopen(sprintf('w%s%s',ModelNo,'2.dat'),'r');
frb2=fopen(sprintf('b%s%s',ModelNo,'2.dat'),'r');
InputDim=NetPara(1); %输入层节点数
OutputDim=NetPara(2); %输出层节点数
MidDim=NetPara(3); %中间层节点数
[w1,count]=fscanf(frw1,'%f',[MidDim,InputDim]);
[b1,count]=fscanf(frb1,'%f',[MidDim,1]);
[w2,count]=fscanf(frw2,'%f',[OutputDim,MidDim]);
[b2,count]=fscanf(frb2,'%f',[OutputDim,1]);
fclose(frw1);
fclose(frb1);
fclose(frw2);
fclose(frb2);
for i=1:InputDim
p1(i)=SimulatePara(i);
end
a=simuff(p1',w1,b1,InputFun,w2,b2,OutputFun);
%竞争层
aa =compet(a);
%获取竞争结果为1矢量下标
for j=1:OutputDim
if (aa(j,1)==1)
retdouble=j;
end
end
%maxr=a(1,1);
%retdouble=1;
%for j=1:OutputDim
% if (maxr<a(j,1))
% maxr=a(j,1);
% retdouble=j;
% end
%end
%将仿真结果写入文件
fwresult=fopen(sprintf('result%s%s',ModelNo,'.dat'),'w');
fprintf(fwresult,'%9.4f\n',a);
fclose(fwresult);
logsig(1);
purelin(1);
tansig(1);
cd(olddir);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -