⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 径向基.m

📁 用MATLAB编写的小程序
💻 M
字号:
%RBF神经网络进行非线性滤波时的源程序
%实例是用其算法描述如下模型的未知系统:
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; %给各个收敛因子赋初值
%%%%%%%%以上是给各个向量赋初值的程序%%%%%%

%%%%%%%正向运算过程%%%%%%%%
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

%%%%%%%对权值进行自适应调整%%%%%%%%
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('迭代次数,k')
ylabel('平方误差(d')
grid; 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -