声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 661|回复: 1

求教:哪位高手帮我看看修改一下程序?

[复制链接]
发表于 2006-5-24 00:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面是在频域下利用幅度平方误差最小法设计的IIR数字滤波器的程序,但在运行错误,我修改了两天,还是没改对,麻烦看看,指导一下.
function [A,para]=IIRdirFreq(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);
difffai=zeros(1,4*k);
E(2)=-0.5;n=3;
while(abs(E(n-1)-E(n-2))>0.001)&(n<=N)
P=zeros(1,M);
a1=zeros(1,M);
b1=zeros(1,M);
     for n1=1:k
        m1=4*(n1-1);
        a1=1+fai(m1+1)*z1+fai(m1+2);
        b1=1+fai(m1+3)*z1+fai(m1+4);
    end
    P=P*(a1/b1);
    P=abs( P);
     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(z1./(1+fai(m1+3)*z1+fai(m1+4)*z2)))';
    end
    fai=fai-u.*diff_fai;
    n=n+1;
end
para=fai;
A=A0;
回复
分享到:

使用道具 举报

发表于 2006-5-24 10:48 | 显示全部楼层
低手帮你顶一下.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 09:05 , Processed in 0.064474 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表