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

📄 direct_rls.m

📁 仿真直接RLS算法
💻 M
字号:
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %%   RLS Algorithm;
   
   r=wavread('C:\MATLAB\work\Write_In_Paper\Shi_Yan.wav');
   r=r(1:2000);
   N=length(r);
   Hn =[0.8783   -0.5806    0.6537   -0.3223    0.6577   -0.0582   0.2895   -0.2710    0.1278   -0.1508    0.0238   -0.1814   0.2519   -0.0396    0.0423   -0.0152    0.1664   -0.0245   0.1463   -0.0770    0.1304   -0.0148    0.0054   -0.0381    0.0374   -0.0329    0.0313   -0.0253    0.0552  -0.0369   0.0479   -0.0073    0.0305   -0.0138    0.0152   -0.0012  0.0154   -0.0092    0.0177   -0.0161    0.0070   -0.0042  0.0051   -0.0131    0.0059   -0.0041    0.0077   -0.0034   0.0074   -0.0014    0.0025   -0.0056    0.0028   -0.0005   0.0033   -0.0000    0.0022   -0.0032    0.0012   -0.0020   0.0017   -0.0022    0.0004   -0.0011      0          0   ];
   Hn=Hn(1:64);
   output=conv(r,Hn);
   order=64 ; %   the order of the filter;
   w=zeros(order,1);
   I=eye(order,order);
   delta=0.001;
   P=1/delta*I;
   d=output;
   lamda=0.85;
   error=zeros(N,1);
for  i=order:N
     u=r(i:-1:i-order+1);
     e=d(i)-w'*u;
     product=multiply(P,u);
     k=(product)/(lamda+u'*(product));
     P=1/lamda*(P-k*u'*P);
     w=w+k*e;
     error(i)=error(i)+e^2;
 end;
     figure;
     semilogy(error(order:N),'r');
     
     
     
     Hn =[0.8783   -0.5806    0.6537   -0.3223    0.6577   -0.0582   0.2895   -0.2710    0.1278   -0.1508    0.0238   -0.1814   0.2519   -0.0396    0.0423   -0.0152    0.1664   -0.0245   0.1463   -0.0770    0.1304   -0.0148    0.0054   -0.0381    0.0374   -0.0329    0.0313   -0.0253    0.0552  -0.0369   0.0479   -0.0073    0.0305   -0.0138    0.0152   -0.0012  0.0154   -0.0092    0.0177   -0.0161    0.0070   -0.0042  0.0051   -0.0131    0.0059   -0.0041    0.0077   -0.0034   0.0074   -0.0014    0.0025   -0.0056    0.0028   -0.0005   0.0033   -0.0000    0.0022   -0.0032    0.0012   -0.0020   0.0017   -0.0022    0.0004   -0.0011      0          0   ];
     Hn=Hn(1:64);
%读入语音;  it is a column vector;

 r=wavread('C:\MATLAB\work\Write_In_Paper\Shi_Yan.wav');
   r=r(1:2000);
% cut the former 5000 points;
r=r';  r=r+0.2*randn(size(r));% r is the input noisy signal vector;
mu=0.6;
% the output signal vector;
output=conv(r,Hn);  N=length(r);
k=length(Hn);   % k is the order of the fikter;
win=zeros(1,k);  % the filter coeffients vector;
error=zeros(1,N);
for i=k:N
    input=r(i:-1:i-k+1);  % intercept the input vector;
    e=output(i)-win*input';
    win=win+mu*e*input;
    error(i)=error(i)+e^2;
end;
   hold on;
    semilogy(error,'b');

⌨️ 快捷键说明

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