用matlab神經網路工具箱構建RBF神經網路,跪求源程式

時間 2021-07-02 04:59:59

1樓:匿名使用者

你幹什麼用啊

是模式分類?

要是得話我有原始碼不過是用 matlab 工具箱寫的要嗎

2樓:快來下啊

希望對您有用

clcclear

close all

% 產生訓練樣本與測試樣本,每一列為一個樣本

p1 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];

t1 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];

p2 = [rand(3,5),rand(3,5)+1,rand(3,5)+2];

t2 = [repmat([1;0;0],1,5),repmat([0;1;0],1,5),repmat([0;0;1],1,5)];

% 歸一化

[pn1,minp,maxp] = premnmx(p1);

pn2 = tramnmx(p2,minp,maxp);

% 訓練

switch 2

case 1

% 神經元數是訓練樣本個數

spread = 1; % 此值越大,覆蓋的函式值就大(預設為1)

net = newrbe(pn1,t1,spread);

case 2

% 神經元數逐步增加,最多就是訓練樣本個數

goal = 1e-4; % 訓練誤差的平方和(預設為0)

spread = 1; % 此值越大,需要的神經元就越少(預設為1)

mn = size(pn1,2); % 最大神經元數(預設為訓練樣本個數)

df = 1; % 顯示間隔(預設為25)

net = newrb(pn1,t1,goal,spread,mn,df);

case 3

spread = 1; % 此值越大,需要的神經元就越少(預設為1)

net = newgrnn(pn1,t1,spread);

end% 測試

y1 = sim(net,pn1); % 訓練樣本實際輸出

y2 = sim(net,pn2); % 測試樣本實際輸出

y1 = full(compet(y1)); % 競爭輸出

y2 = full(compet(y2));

% 結果統計

result = ~sum(abs(t1-y1)) % 正確分類顯示為1

percent1 = sum(result)/length(result) % 訓練樣本正確分類率

result = ~sum(abs(t2-y2)) % 正確分類顯示為1

percent2 = sum(result)/length(result) % 測試樣本正確分類率

matlab中用rbf神經網路做**的**怎麼寫

3樓:會飛的小兔子

clc;

clearall;

closeall;

%%----buildatrainingsetofasimilarversionofxor

c_1=[00];

c_2=[11];

c_3=[01];

c_4=[10];

n_l1=20;%numberoflabel1

n_l2=20;%numberoflabel2

a=zeros(n_l1*2,3);

a(:,3)=1;

b=zeros(n_l2*2,3);

b(:,3)=0;

%createrandompoints

fori=1:n_l1

a(i,1:2)=c_1+rand(1,2)/2;

a(i+n_l1,1:2)=c_2+rand(1,2)/2;

endfori=1:n_l2

b(i,1:2)=c_3+rand(1,2)/2;

b(i+n_l2,1:2)=c_4+rand(1,2)/2;

end%showpoints

scatter(a(:,1),a(:,2),,'r');

holdon

scatter(b(:,1),b(:,2),,'g');

x=[a;b];

data=x(:,1:2);

label=x(:,3);

%%usingkmeanstofindcintervector

n_center_vec=10;

rng(1);

[idx,c]=kmeans(data,n_center_vec);

holdon

scatter(c(:,1),c(:,2),'b','linewidth',2);

%%calulatesigma

n_data=size(x,1);

%calculatek

k=zeros(n_center_vec,1);

fori=1:n_center_vec

k(i)=numel(find(idx==i));

%thencalucatesigma

sigma=zeros(n_center_vec,1);

fori=1:n_center_vec

[n,d]=knnsearch(data,c(i,:),'k',k(i));

l2=(bsxfun(@minus,data(n,:),c(i,:)).^2);

l2=sum(l2(:));

sigma(i)=sqrt(1/k(i)*l2);

end%%calutateweights

%kernelmatrix

k_mat=zeros(n_data,n_center_vec);

fori=1:n_center_vec

r=bsxfun(@minus,data,c(i,:)).^2;

r=sum(r,2);

k_mat(:,i)=exp((-r.^2)/(2*sigma(i)^2));

endw=pinv(k_mat'*k_mat)*k_mat'*label;

y=k_mat*w;

%y(y>=0.5)=1;

%y(y<0.5)=0;

%%trainingfunctionandpredictfunction

[w1,sigma1,c1]=rbf_training(data,label,10);

y1=rbf_predict(data,w,sigma,c1);

[w2,sigma2,c2]=lazyrbf_training(data,label,2);

y2=rbf_predict(data,w2,sigma2,c2);

擴充套件資料

matlab的特點

1、具有完備的圖形處理功能,實現計算結果和程式設計的視覺化;

2、友好的使用者介面及接近數學表示式的自然化語言,使學者易於學習和掌握;

3、功能豐富的應用工具箱(如訊號處理工具箱、通訊工具箱等) ,為使用者提供了大量方便實用的處理工具。

4樓:萬同堂

%rbf**模型

t_data=[0.1 0.68668 0.67143 0.79999 0.79091 0.40004;

0.36667 0.58001 0.1 0.7 0.71818 0.20001;

0.26 0.47334 0.1 0.29997 0.2091 0.80009;

0.36667 0.9 0.9 0.29997 0.13637 0.37504;

0.26 0.84668 0.67143 0.1 0.42727 0.37504;

0.36667 0.58001 0.44286 0.49999 0.1 0.55006;

0.15333 0.47334 0.44286 0.7 0.42727 0.60006;

0.1 0.84668 0.67143 0.29997 0.5 0.1;

0.15333 0.42 0.21429 0.49999 0.5 0.55006;

0.20667 0.79335 0.21429 0.59999 0.5 0.32503;

0.1 0.42 0.21429 0.9 0.5 0.45005;

0.1 0.84668 0.32857 0.59999 0.5 0.27502;

0.20667 0.47334 0.32857 0.29997 0.13637 0.50005;

0.1 0.68668 0.67143 0.49999 0.24546 0.20001;

0.42 0.58001 0.21429 0.9 0.9 0.42504;

0.31334 0.58001 0.44286 0.49999 0.31818 0.25002;

0.15333 0.42 0.1 0.19999 0.35454 0.55006;

0.20667 0.47334 0.32857 0.29997 0.31818 0.27502;

0.15333 0.68668 0.44286 0.29997 0.31818 0.40004;

0.20667 0.20667 0.21429 0.39999 0.28183 0.52506;

0.26 0.79335 0.21429 0.49999 0.57273 0.9;

0.42 0.36667 0.1 0.59999 0.35454 0.30003;

0.47334 0.36667 0.1 0.59999 0.57273 0.35003;

0.1 0.47334 0.67143 0.7 0.42727 0.49894;

0.42 0.58001 0.67143 0.49999 0.24546 0.47505;

0.31334 0.1 0.32857 0.9 0.79091 0.8501;

0.1 0.52667 0.21429 0.9 0.5 0.50005;

0.52667 0.55867 0.21429 0.1 0.28183 0.42504;

0.9 0.58001 0.55715 0.1 0.17273 0.32503;

0.15333 0.68668 0.62572 0.29997 0.2091 0.57506];

%初始化資料

tt=t_data(:,6);x=t_data(:,1:5);tt=tt';

%隨機選取中心

c=x;

%定義delta平方為樣本各點的協方差之和

delta=cov(x');

delta=sum(delta);

%隱含層輸出r

for i=1:1:30

for j=1:1:30

r(i,j)=((x(i,:)-c(j,:)))*((x(i,:)-c(j,:))');

r(i,j)=exp(-r(i,j)./delta(j));

endend

p=r;

%建模%r=radbas(p);

err_goal=0.001;

sc=3;

net=newrb(p,tt,err_goal,sc,200,1);

%測試ty=sim(net,p);

te=tt-ty;

tsse=sse(te);

tmse=mse(te);

%**(測試)曲線

figure;

plot(tt,'-+');

hold on;

plot(ty,'r:*');

legend('化驗值','**值');

title('rbf網路模型輸出**曲線');

xlabel('輸入樣本點');

ylabel('澱粉利用率');

axis([1,30,0,1]);

Matlab神經網路工具箱輸入問題

格式是對的,應該是可以的啊,你得仔細看看要匯入的targets資料到底在不在workspace中。 你好,我今天在使用工具箱時也遇到了類似的問題,並已經解決,希望我的建議可以幫助到你。在使用一部分神經網路工具箱時對標籤值 targets 是有格式要求的,如我輸入5個資料,對應的標籤分別是2,3,4,...

matlab中建立bp神經網路的函式newff的引數的

1.newff雖然沒有規定輸入層神經元個數,那輸入層神經元個數是如何確定的?輸入層是根據你讀入資料的維度,自動生成的。2.我現在讀入了10張 把每張 歸一化成了50 20的,並轉換成1 1000的行向量,最後生成了10 1000的二維矩陣,然後,我再用eye 10,10 函式製造了一個單位矩陣,那麼...

matlab在bp神經網路訓練時出現錯誤說未定義與

依然特雷西 1 實現 以函式的形式訓練神經網路命令。2 實現 p為輸入向量的方法命令。3 實現 t為目標向量的命令。4 實現 建立一個新的前向神經網路的命令。5 實現 呼叫演算法訓練bp網路的命令。6 其他設定命令。 主要問題出在txt樣本上,資料之間應以空格間隔,而不能是製表符,否則fcanf不能...