rbf.m

来自「这是在国外某网站上下的一些自适应信号处理的源程序」· M 代码 · 共 51 行

M
51
字号
%RBF Radial Basis Function algorithm%%   'ifile.mat' - input file containing:%      Nr - members of ensemble%      dim - iterations%      Nneur - number of neurons%      Sx - standard deviation of input%      Sn - standard deviation of measurement noise%      ur - convergence factor for reference vector%      uw - convergence factor for coefficient vector%      us - convergence factor for spread%%   'ofile.mat' - output file containing:%      MSE - mean-square errorclear all		% clear memoryload ifile;		% read input variablesfor j=1:Nr   n=Sn*randn(dim,1);           % noise at channel output    x=Sx*randn(dim,1);     % input signal   xl1=zeros(dim,1); xl2=xl1;   xl1(1)=0; xl1(2:dim)=x(1:dim-1);   xl2(1)=0; xl2(2:dim)=xl1(1:dim-1);    d=-.08*x-.15*xl1+.14*xl2+.055*x.^2+.3*x.*xl2-.16*xl1.^2+.14*xl2.^2+n; ...     % unknown system output   w=randn(Nneur,dim); w(:,1)=randn(Nneur,1);  % initial coefficient vector   vet=.5*randn(Nneur,3);                      % initial reference vector   sigma=ones(Nneur,1);                        % initial neuron spread   for i=1:dim      uxl(:,i)=[x(i) xl1(i) xl2(i)]';      % 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;endMSE=mean(mse);save ofile MSE;

⌨️ 快捷键说明

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