📄 arcma.m
字号:
%arcma%cma for ar realizationclearii=sqrt(-1);channo=input('channel number (1 or 2) = ');if channo<1.5 croots=[.6,.5+.1*ii,.5-.1*ii]; %works with both algorithmselsecroots=[.8,.7+.3*ii,.7-.3*ii]; %problems with Feintuch variant %works with CM-minimizing variantendc=real(poly(croots));lc=length(c);nits=input('number of iterations = ');x=sign(rand(1,nits+lc)-0.5*ones(1,nits+lc));r=zeros(1,nits);for ind=1:nitsr(ind)=c*x(ind+lc-1:-1:ind)';endlb=lc-1;initfac=input('initialization factor (between -1 and 1) of desired value = ');b=zeros(nits,lb);b(1,:)=initfac*(-c(2:lc));rootb=zeros(nits,lb);rootb(1,:)=roots([1 -b(1,:)])';y=zeros(1,nits+lb-1);yf=zeros(1,nits+lb-1);mu=input('stepsize (e.g. 0.0002) = ');algchoice=input('algorithm number (Feintuch=1, CM-minimizing=2) = ');for ind=1:nits-1y(ind+lb)=r(ind)+b(ind,:)*y(ind+lb-1:-1:ind)';if algchoice <1.5%Feintuch variantb(ind+1,:)=b(ind,:)+mu*y(ind+lb-1:-1:ind)*y(ind+lb)*(1-y(ind+lb)*y(ind+lb));else%CM-minimizing variant with regressor filteringyf(ind+lb)=y(ind+lb)+b(ind,:)*yf(ind+lb-1:-1:ind)';b(ind+1,:)=b(ind,:)+mu*yf(ind+lb-1:-1:ind)*y(ind+lb)*(1-y(ind+lb)*y(ind+lb));rootb(ind+1,:)=roots([1 -b(ind+1,:)])';endendfinal_parameter_error=-c(2:lc)-b(nits,:)figure(1)plot(y.*y)title('squared equalizer output - should be 1')figure(2)plot(b)hold onplot(ones(nits,1)*(-c(2:lc)),':')hold offtitle('parameter trajectories')%to insure plot of complex roots a small imaginary part is added%to all root locations prior to plottingfigure(3)plot(rootb+0.000001*ii*ones(size(rootb)),'+k')hold onplot(rootb(1,:)+0.000001*ii*ones(size(rootb(1,:))),'or')plot(rootb(nits,:)+0.000001*ii*ones(size(rootb(nits,:))),'dg')plot(roots(c)+0.000001*ii*ones(size(roots(c))),'*m')hold offtitle('adapting root locations (o:start, diamond:end, *:desired)')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -