net.trainParam.goal= 0.00001
net.trainParam.epochs= 10000
net= train(net,p,t)
Y=sim(net,p)
隐含层数通常取输入层数的1.2~1.5倍,但隐含层数增加相对训练效果会好些。
输出结果是根据你的T决定的,你这个如果训练效果好的话输出值的和就为1。
#include<stdio.h>//递归求解对大最小值
void findMinMax(int a[],int l,int r,int *maxnum,int *minnum)
{
if(l==r)
{
*maxnum=*minnum=a[l]
return
}
int mid,lmin,rmin,lmax,rmax
mid = (l+r)/2
findMinMax(a,l,mid,&lmax,&lmin)
findMinMax(a,mid+1,r,&rmax,&rmin)
*maxnum=lmax>rmax?lmax:rmax
*minnum=lmin<rmin?lmin:rmin
}
int main()
{
int a[10]={
1,2,3,4,22,6,7,8,-1,10
},minnum,maxnum
findMinMax(a,0,9,&maxnum,&minnum)
printf("%d %d",maxnum,minnum)
}
//
去掉这一句:[Pn]=tramnmx(P,minp,maxp) 你这一句不开玩笑吗?
??? Error using ==>network.subsasgn>network_subsasgn at 535
"layers{1}.transferFcn" cannot be set to non-existing function "tasing'purelin".
这一错误是因为,你漏掉了逗号,而且tansig拼错了,应该是{'tansig','purelin'}
我直接帮你把代码全部改好吧,复制到m文件或命令窗口运行即可:
clc,clearP=-pi/2+0.1:pi/10:pi/2-0.1
T=tan(P)
plot(P,T,'-*')
[Pn,pps]=mapminmax(P,0,1) %p归一化
[Tn,tps]=mapminmax(T,0,1) %t归一化
net=newff(minmax(Pn),[5 1],{'tansig','purelin'},'trainlm')
net.trainParam.show=10
net.trainParam.lr=0.05
net.trainParam.epochs=500
net.trainParam.goal=0.01
[net,tr]=train(net,Pn,Tn)
r=sim(net,Pn)
r=mapminmax('reverse',r,tps) %反归一化
plot(P,r,'-ro',P,T,'-b*')