概述
你可以先生成net网络,经训练后即可调用gensim函数。我给你看一个例子吧:
%训练样本集
%输入向量
P=[756。5745 765。3261 762。9077 762。7337 778。0583 768。4183 753。3221 754。
777 869。1892 837。8081 850。121 871。7502 886。9313 896。7662 844。2693 878。671 936。677 953。5296 936。9523 972。7305 969。6961 966。
8402 967。3992 991。9504;
20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45 20 20 20 20 45 45 45 45];
%目标向量
T=[750 750 750 750 750 750 750 750 850 850 850 850 850 850 850 850 950 950 950 950 950 950 950 950];
%输入向量、目标向量归一化
p=(P-[750;20]*ones(1,24))。
/([950;45]*ones(1,24)-[750;20]*ones(1,24));
t=(T-750)/(950-750);
%创建BP网络:网络含5个隐层和一个输出层
net=newff([0,1;0,1],[5,1],{'tansig','logsig'},'trainlm');
%对网络进行训练
net=train(net,p,t);
%保存网络
save cellnet net
%生成模块
gensim(net,-1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
首先需要指出的是,newff函数是用来产生新的网络的,使用时输入向量的维数可以是任意的。
下面是我写的几行命令,newff命令中的minmax(X)决定了新生成网络的输入为5维
%输入向量
X=[0 0。5398 0。5325 0。5324;
0 -0。9341 0。9339 -0。9327;
0 -6。4617 0。
8567 0。8850;
0 10。3576 -10。1934 8。9586;
0 10。9531 31。1317 51。2697];
%目标向量
T=[0 10。9630 31。1417 51。2796];
%输入向量、目标向量归一化:你自己补充一下
%创建BP网络:假设网络含5个隐层和一个输出层
net=newff(minmax(X),[5,1],{'tansig','logsig'},'trainlm');
%对网络进行训练
net=train(net,X,T);
%生成模块
gensim(net,-1)
%需要指出的是,上面调用的newff函数的用法是基于MATLABR2007或者早些版本的。
MATLABR2008a上调用时会稍微有所不同。你可以用help看看
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
输入输出都是按行归一化的。每一个输入矩阵中,每一列都是一个训练或测试样本,对列输入没有意义的。
我用的是MATLABR2008版的,你的那段程序在语法上除了归一化不正确导致的一些问题和newff调用警告外好像没有其他的bug。
全部
最后
以上就是鲤鱼战斗机为你收集整理的matlab中sig怎么用,Simulink中用什么模块表示?的全部内容,希望文章能够帮你解决matlab中sig怎么用,Simulink中用什么模块表示?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复