本文目錄一覽:
用c語言編寫RBF神經網路程序
RBF網路能夠逼近任意的非線性函數,可以處理系統內的難以解析的規律性,具有良好的泛化能力,並有很快的學習收斂速度,已成功應用於非線性函數逼近、時間序列分析、數據分類、模式識別、信息處理、圖像處理、系統建模、控制和故障診斷等。
簡單說明一下為什麼RBF網路學習收斂得比較快。當網路的一個或多個可調參數(權值或閾值)對任何一個輸出都有影響時,這樣的網路稱為全局逼近網路。由於對於每次輸入,網路上的每一個權值都要調整,從而導致全局逼近網路的學習速度很慢。BP網路就是一個典型的例子。
如果對於輸入空間的某個局部區域只有少數幾個連接權值影響輸出,則該網路稱為局部逼近網路。常見的局部逼近網路有RBF網路、小腦模型(CMAC)網路、B樣條網路等。
附件是RBF神經網路的C++源碼。
matlab中用RBF神經網路做預測的代碼怎麼寫
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;
end
fori=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));
end
%UsingknnsearchtofindKnearestneighborpointsforeachcentervector
%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));
end
W=pinv(k_mat’*k_mat)*k_mat’*label;
y=k_mat*W;
%y(y=0.5)=1;
%y(y0.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、功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。
參考資料來源:百度百科—MATLAB
C語言複製文件
不應對非文本文件使用fgetc等易受干擾的函數,建議用fread,fwrite讀寫二進位文件
#include
“stdio.h”
/*
保護硬碟,絕對不要一個位元組一個位元組複製
*/
#define
SIZEOFBUFFER
256*1024L
/*
緩衝區大小,默認為256KB
*/
long
filesize(FILE
*stream)
{
long
curpos,
length;
curpos
=
ftell(stream);
fseek(stream,
0L,
SEEK_END);
length
=
ftell(stream);
fseek(stream,
curpos,
SEEK_SET);
return
length;
}
int
copyfile(const
char*
src,const
char*
dest)
{
FILE
*fp1,*fp2;
int
fsize,factread;
static
unsigned
char
buffer[SIZEOFBUFFER];
fp1=fopen(src,”rb”);
fp2=fopen(dest,”wb+”);
if
(!fp1
||
!fp2)
return
0;
for
(fsize=filesize(fp1);fsize0;fsize-=SIZEOFBUFFER)
{
factread=fread(buffer,1,SIZEOFBUFFER,fp1);
fwrite(buffer,factread,1,fp2);
}
fclose(fp1);
fclose(fp2);
return
1;
}
int
main()
{
copyfile(“file1.txt”,”file2.txt”);
return
0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241472.html