%RBF法建模
%标准化的建模数据集
m_data=[0 0
0.06977 0.069713409
0.13952 0.139067795
0.20928 0.207755664
0.27904 0.275432908
0.3488 0.341770314
0.41856 0.406445183
0.48832 0.469142906
0.55808 0.52955849
0.62784 0.587398046
0.6976 0.642380212
0.76736 0.694237531
0.83712 0.742717742
0.872 0.765617061
0.94176 0.808594876
1.01152 0.847639294
1.08128 0.882560385
1.15104 0.913188273
1.2208 0.939373972
1.29056 0.960990101
1.36032 0.977931509
1.43008 0.990115784
1.49984 0.997483656
1.5696 0.999999284
1.63936 0.997650432
1.70912 0.990448525
1.77888 0.978428596
1.84864 0.961649117
1.9184 0.94019171
1.98816 0.914160756
2.05792 0.883682881
2.12768 0.848906344
2.19744 0.810000316
2.2672 0.767154054
2.33696 0.720575982
2.40672 0.670492681
2.47648 0.617147778
2.54624 0.560800769
2.616 0.501725754
2.68576 0.440375307
2.75552 0.376553054
2.82528 0.31106427
2.89504 0.244062319
2.9648 0.17587313
3.03456 0.10682841
3.10432 0.037264024
3.17408 -0.032481632
3.27872 -0.136697995
3.34848 -0.205414623
3.41824 -0.273132015
];
X=m_data(:,1);T=m_data(:,2);T=T';
%随机选取中心
C=X;
%定义delta平方为样本各点的协方差之和
delta=cov(X');
delta=sum(delta);
%隐含层输出H
for i=1:1:50
for j=1:1:50
H(i,j)=((X(i,:)-C(j,:)))*((X(i,:)-C(j,:))');
H(i,j)=exp(-H(i,j)./delta);
end
end
p=H;
%建模
%
err_goal=0.01;
sc=10;
net=newrb(p,T,err_goal,sc,200,1);
Y=sim(net,p);
E=T-Y;
SSE=sse(E);
MSE=mse(E);
%拟合图
figure;
plot(T);
hold on;
plot(Y,'r:');
title('RBF网络人体组织建模拟合曲线图');
legend('理想值','实际值');
ylabel('输出样本点');
xlabel('输入样本点');
axis([1,50,-1,1]);
%RBF法预测
%标准化的预测数据集
m_data=[0 0
0.03488 0.034872928
0.10466 0.104469035
0.1744 0.17351727
0.2441 0.241683103
0.3139 0.308770408
0.38368 0.374335436
0.45344 0.438060492
0.5232 0.49965461
0.59296 0.558818166
0.66272 0.61526336
0.73248 0.668715615
0.80224 0.718914913
0.90688 0.787585013
0.97664 0.82862109
1.0464 0.865626353
1.11616 0.898420789
1.18592 0.926844872
1.25568 0.950760333
1.32544 0.970050834
1.3952 0.984622538
1.46496 0.994404562
1.53472 0.99934932
1.60448 0.999432759
1.67424 0.994654472
1.744 0.985037705
1.81376 0.970629237
1.88352 0.951499158
1.95328 0.927740527
2.02404 0.899031482
2.0928 0.866821853
2.16256 0.829958148
2.23232 0.789057125
2.30208 0.744317746
2.37189 0.69592174
2.4416 0.644212068
2.51136 0.589332732
2.58112 0.531586597
2.65088 0.471254566
2.72064 0.408630125
2.7904 0.34401791
2.86016 0.277732224
2.92992 0.210095514
2.99968 0.141436798
3.06944 0.072090065
3.1392 0.002392651
3.20896 -0.067316402
3.3136 -0.171160417
3.38336 -0.239418945
3.45312 -0.306512823
];
X1=m_data(:,1);T1=m_data(:,2);T1=T1';
%隐含层输出H
for i=1:1:50
for j=1:1:50
H1(i,j)=((X1(i,:)-C(j,:)))*((X1(i,:)-C(j,:))');
H1(i,j)=exp(-H1(i,j)./delta);
end
end
p1=H1;
Y1=sim(net,p1);
E1=T1-Y1;
SSE=sse(E1);
MSE=mse(E1);
E2=Y-Y1
%拟合图
figure;
plot(T1);
hold on;
plot(Y1,'r:');
title('RBF网络人体组织软测量曲线图');
legend('理想值','实际值');
ylabel('输出样本点');
xlabel('输入样本点');
axis([1,50,-1,1]);
figure;
plot(E);
title('RBF网络人体组织建模误差图');
figure;
plot(E1);
title('RBF网络人体组织软测量误差图');