📄 rbf.m
字号:
%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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -