帮我看看BP网络消噪的MATLAB程序

来源:百度知道 编辑:UC知道 时间:2024/05/29 11:38:09
这段BP网络消噪程序是我从书上看到的,但是运行却有错误,请高手帮我看看,还有请帮我编一个RBF消噪的程序。%定义样本
t=0:0.01:10;
y=randn(size(t));
yn=sin(y);
p=y(1:30)
t=yn(1:30)
%初始化BP网络
%其中,P为输入量,隐层结点数为4,输出层结点数为1
%tansig和purelin分别为隐层和输出层的变换函数
%训练算法为trainlm
net=newff(minmax(p),[4,1],{‘tansig’, ‘purelin’},‘trainlm’);
%BP网络的训练
%利用BP学习规则训练前向网络,使其完成函数逼近、矢量分类和模式识别,选择训练参%数,并指示如何进行训练
%一旦训练达到最大的训练次数或网络误差平方和降低到误差之下,就会使网络停止学习
%指示两次更新显示间的训练次数
net.trainParam.show=10;
%指示训练的最大次数
net.trainParam.epochs=1000;
%误差平方和指标
net.trainParam.goal=0.001;
%指定学习速率,即权值和阈值更新的比例
net.trainParam.lr=0.01;
%开始训练
[net,tr]=train(net,p,t);
%画出误差变化曲线
figure(1);
plotperf(tr);
%计算网络仿真输出
a=sim(net,p);
figure(2);
plot([0:0.01:29],t,‘-+’,[0:0.01:2.9],a,‘-*’);

1. "figure(1); plotperf(tr); %计算网络仿真输出"这一段是不需要的,因为网络训练时就自动调用plotperf函数了。

2. 注意标点符号,不要用中文的标点,程序中单引号就用错了。

3. 最后一句中,应该是:
plot([0:0.1:2.9],t,'-+',[0:0.1:2.9],a,'-*');

改正后完全可以得到训练结果和仿真输出,我在matlab6.5上已经通过了。