matlab實現RBF的相關函式

2021-07-06 04:02:02 字數 3028 閱讀 2864

摘自《matlab神經網路43個案例分析》

(1)newrb()

[net,tr]=newrb(p,t,goal,spread,mn,df)

其中p為q組輸入向量組成的r*q位矩陣,t為q組目標分類向量組成的s*q維矩陣。goal為均方誤差目標(mean squard error goal),預設為0.0;spread為徑向基函式的擴充套件速度,預設為1;mn為神經元的最大數目,預設為q;df維兩次顯示之間所新增的神經元數目,預設為25;ner為返回值,乙個rbf網路,tr為返回值,訓練記錄。

用newrb()建立rbf網路是乙個不斷嘗試的過程(從程式的執行可以看出來),在建立過程中,需要不斷增加中間層神經元的和個數,知道網路的輸出誤差滿足預先設定的值為止。

(2)newrbe()

該函式用於設計乙個精確徑向基網路(exact rbf),呼叫格式為:

net=newrbe(p,t,spread)

其中p為q組輸入向量組成的r*q維矩陣,t為q組目標分類向量組成的s*q維矩陣;spread為徑向基函式的擴充套件速度,預設為1

和newrb()不同的是,newrbe()能夠基於設計向量快速,無誤差地設計乙個徑向基網路。

(3)radbas()

該函式為徑向基傳遞函式,呼叫格式為

a=radbas(n)

info=radbas(code)

其中n為輸入(列)向量的s*q維矩陣,a為函式返回矩陣,與n一一對應,即n的每個元素通過徑向基函式得到a;info=radbas(code)表示根據code值的不同返回有關函式的不同資訊。包括

derive——返回導函式的名稱

name——返回函式全稱

output——返回輸入範圍

active——返回可用輸入範圍

使用exact徑向基網路來實現非線性的函式回歸:

%%清空環境變數

clcclear

%%產生輸入輸出資料

%設定步長

interval=0.01;

%產生x1,x2

x1=-1.5:interval:1.5;

x2=-1.5:interval:1.5;

%按照函式先求的響應的函式值,作為網路的輸出

f=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%%網路建立和訓練

%網路建立,輸入為[x1;x2],輸出為f。spread使用預設

net=newrbe([x1;x2],f);

%%網路的效果驗證

%將原資料回帶,測試網路效果

ty=sim(net,[x1;x2]);

%%使用影象來看網路對非線性函式的擬合效果

figure

plot3(x1,x2,f,'rd');

hold on;

plot3(x1,x2,ty,'b-.');

view(113,36);

title('視覺化的方法觀察嚴格的rbf神經網路的擬合效果');

xlabel('x1')

ylabel('x2')

zlabel('f')

grid on

函式影象:

%%清空環境變數

clcclear

%%產生訓練樣本,訓練輸入,訓練輸出

%ld為樣本隸屬

ld=400;

%產生2*ld的矩陣

x=rand(2,ld);

%將x轉換到[-1.5 1.5]之間

x=(x-0.5)*1.5*2;

%x的第一行為x1,第二行為x2

x1=x(1,:);

x2=x(2,:);

%計算網路輸出f值

f=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%%建立rbf神經網路

net=newrb(x,f);

%%建立測試樣本

interval=0.1;

[i,j]=meshgrid(-1.5:interval:1.5);

row=size(i);

tx1=i(:);

tx1=tx1';

tx2=j(:);

tx2=tx2';

tx=[tx1;tx2];

%%使用建立的rbf網路進行模擬,得出網路輸出

ty=sim(net,tx);

%%使用影象,畫出三維圖

%真正的函式影象

interval=0.1;

[x1,x2]=meshgrid(-1.5:interval:1.5);

f=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

subplot(1,3,1);

mesh(x1,x2,f);

zlim([0,60]);

title('真正的函式影象');

%網路得出的函式影象

v=reshape(ty,row);

subplot(1,3,2);

mesh(i,j,v);

zlim([0,60]);

title('rbf神經網路結果');

%誤差影象

subplot(1,3,3);

mesh(x1,x2,f-v);

zlim([0,60]);

title('誤差影象');

set(gcf,'position',[300,250,900,400])

結果影象:

結論,可以看出神經網路的訓練結果能夠較好逼近該非線性函式f,由誤差圖可知,實景網路的**效果在資料邊緣處的誤差較大,在其它書指出的擬合效果很好,網路的輸出值與函式值之間的插值在隱藏層神經元的個數為100時已經接近0,說明網路輸出能非常好地逼近函式。

matlab自相關函式 隨機過程中的相關函式的作用

先看問題 1 為什麼在分析隨機過程的時候,得到隨機過程的自相關函式就終止了,不再繼續往下走了?2 考慮隨機過程 1 得到自相關函式之後能做什麼 自相關函式得到之後,自然可以得到 進行多元相關性分析之後,便可以對整個樣本函式進行分析了。2 對隨機過程的認識,需要從兩個方向進行。乙個是隨機變數 乙個是時...

RBF神經網路以及相關的問題

徑向基函式 radial basis function,rbf 是乙個取值僅取決於到原點距離的實值函式,也可以是到任意一中心點的距離,任何乙個滿足上述特性的函式都可以稱為rbf。我們可以從網上看到許多的rbf神經網路的介紹,這裡就不再過多的進行闡述了,主要來說下rbf神經網路的相關問題。1 rbf神...

Matlab實現使用割線方法計算單變數函式的根

給定初始猜測值,secant method 函式使用割線方法找到單變數函式的根。公差和最大迭代次數也可以指定為可選輸入。此函式無意替代matlab的 fzero 後者使用了二等分,割線和反向二次插值方法。示例root secant method f,x0 root secant method f,x...