哪位高手帮我编写一下关于MATLAB BP神经网络编写正弦函数逼近的问题,不要调用已有的函数。

2024-12-26 19:49:36
推荐回答(1个)
回答1:

说清楚,几输入,几输出,要出什么图?
我给你编,做那么大的工作量,连个分都不给,你好意思??
clc
clear
close all
load data
%定义网络输入p和期望输出t
input_train=m_data(1:120,1:4)';
output_train=m_data(1:120,5)';
input_test=m_data(121:180,1:4)';
output_test=m_data(121:180,5)';
%建立相应的BP网络

net=newff(minmax(input_train),[9 1],{'tansig','purelin'},'trainlm');
inputWeights=net.IW{1,1};
inputbias=net.b{1};

% 训练网络
net.trainParam.show=50;
net.trainParam.lr=0.05;
net.trainParam.mc=0.9;
net.trainParam.epochs=1000;
net.trainParam.goal=0.0001;

%调用TRAINGDM算法训练BP网络
net=train(net,input_train,output_train);

%对BP网络进行仿真
A=sim(net,input_train);
E=A-output_train;
M=mse(E)
N=sse(E)
%测试网络
a2n=sim(net,input_test);
m=mse(a2n-output_test)
n=sse(a2n-output_test)
%结果作图
%训练曲线
figure(1)
plot(output_train,'r');
hold on
plot(A,'b.:');
legend('训练样本值','BP拟合值');
title('BP网络训练图');

xlabel('样本个数');
%测试曲线
figure(2)
plot(output_test,'r');
hold on
plot(a2n,'b.:');
legend('测试样本值','BP测试值');
title('BP网络预测输出');

xlabel('样本个数');
%训练误差
figure(3)
plot(output_train-A,'-');
title('BP网络训练误差');
legend('训练样本误差');
ylabel('训练绝对误差');
xlabel('样本个数');
grid
%预测误差
figure(4)
plot(output_test-a2n,'-');
title('BP网络预测误差');
legend('测试样本误差');
ylabel('测试绝对误差');
xlabel('样本个数');
grid;