|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
RBF测试实例4 ]$ ~1 c% c) L8 | _) U! y9 I8 w1 L" h
- r/ Q8 e# Q7 S' q& C8 h, v; A
% % % % % % % % % % % % % % % % % % % 3 f) L$ p! r1 y2 Q
% approximate RBF网络对同意函数进行拟合" a, ~4 M, l+ l. D# |
% % % % % % % % % % % % % % % % % % %
. ?9 D3 W5 a6 i" m: O( z%%清空环境变量 - W! r3 h8 v7 o7 U6 j2 Z# w5 g. ~& h
clc / t0 D# e# B/ [1 ^. K- ?% Q3 Y% A
clear ( L2 E5 i% `9 u, P
%%产生训练样本,训练输入,训练输出
6 R! @8 u/ j0 P' x1 g%ld为样本隶属
9 V* i& F! b9 }4 v/ J8 r kld=400;
- A \4 `9 N) \1 r7 u%产生2*ld的矩阵
3 a; t% M6 x5 S) p$ jx=rand(2,ld);
, K S; J: m) j( q%将x转换到[-1.5 1.5]之间 5 P6 T5 O) `4 h! |
x=(x-0.5)*1.5*2; & q0 A/ ~5 Y4 \- t8 n
%x的第一行为x1,第二行为x2
! j% i1 X+ P2 \; Y9 Xx1=x(1,: );
3 d1 |+ W y5 P/ M( b0 J& ]! Nx2=x(2,: ); 1 N. q4 @7 J6 b
%计算网络输出F值
/ l; I; a5 i% V0 UF=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2); * `4 a. N) ~4 o, \+ A3 c- F
%%建立RBF神经网络
; y2 v0 Y3 ~% t; G8 Q%采用approximate RBF神经网络,spread为默认值
$ K- ^- \. d3 @+ Jnet=newrb(x,F); ! m; Y* l* Y( d+ Q) n% V+ w
%%建立测试样本
. Q9 t H: r& k: [/ zinterval=0.1; 4 `: K2 r: h) u Y! }. @3 K6 x
[i,j]=meshgrid(-1.5:interval:1.5);
8 }# g) O- x9 F' F% @) hrow=size(i);
/ D' M" Q" M, i7 W( b; Y' ]4 Atx1=i(: ); 4 T; C" K2 G: v$ F
tx1=tx1';
; {6 _7 P2 R/ Mtx2=j(: );
' ?9 C9 P9 Y2 C3 |tx2=tx2';
3 m$ a2 i% c- t' Etx=[tx1;tx2]; & S: F" \, b2 l
' A, P% T$ l/ u7 O1 m
%%使用建立的RBF网络进行模拟,得出网络输出 1 S0 H* Q) z" K" R. ?
ty=sim(net,tx); 2 e5 |. W( l1 Q! B8 B9 h
%%使用图像,画出三维图 3 l& k0 Q' T8 q
%真正的函数图像
1 r/ @9 J! H* L4 Q+ W& {- m6 }interval=0.1; i. E( \" Y5 N0 E% o7 s+ x; r% X
[x1,x2]=meshgrid(-1.5:interval:1.5); 2 Y1 ~# e- o/ @ K9 B7 y
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
s" e; [$ v" q, v* A- T; @4 Osubplot(1,3,1);
9 n5 r. E, u7 Y( }) L2 hmesh(x1,x2,F);
2 G" t5 g/ l* @+ pzlim([0,60]);
# g7 R& |1 G R8 v3 H& W0 q4 btitle('真正的函数图像'); ) n: X& p7 p9 T2 {5 ]& N( X
%网络得出的函数图像 0 x, E8 e& J9 a7 h% Q
v=reshape(ty,row); 7 X' w9 m- @: L$ {6 C
subplot(1,3,2); / R' A6 g" s* U6 D
mesh(i,j,v); 1 [3 m$ G5 e3 a5 |, U3 z+ Z' [+ `
zlim([0,60]);
0 V& J$ Y# x2 `+ Htitle('RBF神经网络结果'); + N$ q; s1 e- k1 `" s/ U& X/ _
%误差图像
% I+ O. o2 S3 L" n; K! z4 h8 @subplot(1,3,3); 4 Y9 U M( ^8 Z( {* x$ P
mesh(x1,x2,F-v); ' x$ X# g, x* C) ~
zlim([0,60]); " {) Y* R& Q* l l: i
title('误差图像'); 1 U/ V: k, a- u7 z3 T" e
set(gcf,'position',[300,250,900,400])
* ]3 n5 K* B# F, } |
|