?? 徑向基.m
字號(hào):
%RBF神經(jīng)網(wǎng)絡(luò)進(jìn)行非線(xiàn)性濾波時(shí)的源程序
%實(shí)例是用其算法描述如下模型的未知系統(tǒng):
v(k)=x(k)+0.5x(k-1)
y(k)=v(k)+0.2v2(k)+0.1v3(k)+n(k)
%信道受到了方差為 的高斯噪聲白噪聲(其變化范圍為-10dB到-25dB)的污染。
clear all % clear memory
clc
dim=1000;
Nneur=10;
%Sn=sqrt(10^(-2.5));
Sn=sqrt(10^(-1));
Sx=1;
for j=1:20
n=Sn*randn(dim,1); % noise at channel output
x=Sx*randn(dim,1); % input signal
x1=zeros(dim,1); x1(1)=0; x1(2:dim)=x(1:dim-1);
v= x+0.5*x1;
d=v+0.2*v.^2+0.01*v.^3+n; % unknown system output
w=zeros(Nneur,dim); w(:,1)=randn(Nneur,1); % initial coefficient vector
vet=.5*randn(Nneur,Nneur); % initial reference vector
sigma=ones(Nneur,1); % initial neuron spread
x0=zeros(Nneur,1);
uw=0.1; ur=0.9; us=0.8; %給各個(gè)收斂因子賦初值
%%%%%%%%以上是給各個(gè)向量賦初值的程序%%%%%%
%%%%%%%正向運(yùn)算過(guò)程%%%%%%%%
for i=1:dim
x0=zeros(Nneur,1);
for k=1:Nneur
if i-k+1<1
x0(k)=0;
else
x0(k)=x(i-k+1);
end
end
uxl(:,i)=x0; % new input vector
dis=dist(uxl(:,i)',vet')';
fdis=exp(-(dis.^2)./(sigma.^2));
e(i)=d(i)-w(:,i)'*fdis; % error sample
%%%%%%%對(duì)權(quán)值進(jìn)行自適應(yīng)調(diào)整%%%%%%%%
w(:,i+1)=w(:,i)+2*uw*e(i).*fdis; % new coefficient vector
sigma=sigma+2*us*e(i).*fdis.*w(:,i).*(dis.^2)./(sigma.^3); % new spread
for p=1:Nneur
vet(p,=vet(p,+2*ur*fdis(p)*e(i)*w(p,i)*(uxl(:,i)'-vet(p,)/ ...
(sigma(p)^2); % new reference vector
end
y(i)=w(:,i)'*fdis; % output sample
end
mse(j,=e.^2;
end
MSE=mean(mse);
figure;
plot(log10(MSE))
xlabel('迭代次數(shù),k')
ylabel('平方誤差(d')
grid;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -