iir_dirfreq.m

来自「the file contain many matlab signal sour」· M 代码 · 共 24 行

M
24
字号
function [A,para]=IIR_dirFreq(Hd,k)
u=0.001;N=5000;E=zeros(1,N+1);
M=length(Hd);
w=0:pi/(M-1):pi;
z1=exp(-j.*w);z2=z1.*z1;
fai=zeros(1,4*k);diff_fai=zeros(1,4*k);
E(2)=-0.5;n=3;
while(abs(E(n-1)-E(n-2))>0.001&(n<=N))
    P=abs(IIR(fai,M));
    A0=abs((P*Hd')/(P*P'));
    E(n)=sum((A0*P-abs(Hd)).^2);
    for n1=1:k;
        m1=4*(n1-1);
        c=2*A0*(A0.*P-abs(Hd));
        diff_fai(m1+1)=c*(P.*real(z1./(1+fai(m1+1)*z1+fai(m1+2)*z2)))';
        diff_fai(m1+2)=c*(P.*real(z2./(1+fai(m1+1)*z1+fai(m1+2)*z2)))'; 
        diff_fai(m1+3)=c*(-P.*real(z1./(1+fai(m1+3)*z1+fai(m1+4)*z2)))';
        diff_fai(m1+4)=c*(-P.*real(z2./(1+fai(m1+3)*z1+fai(m1+4)*z2)))';
    end
    fai=fai-u.*diff_fai;
    n=n+1;
end
para=fai;
A=A0;

⌨️ 快捷键说明

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