作业帮 > 综合 > 作业

这是关于CIC滤波器的一段代码,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/04 17:18:20
这是关于CIC滤波器的一段代码,
clear all
K=500;
k=0:1:K;
w=pi*k/K;
R=input('Please input R:');
M=input('Please input M:');
N=input('Please input N:');
num=sin(R*M*w/2);
den=sin(w/2)+eps;
H=(num./den).^N;
magH=abs(H);
angH=-1/2*(R*M-1)*N*w;
magH=20*log10(magH+eps);
subplot(2,1,1)
plot(w/pi,magH);grid on;
axis([0,1,-200,300]);
xlabel('frequency in pi units');
ylabel('|H|');
title('Magnitude Response(db)');
subplot(2,1,2);
plot(w/pi,angH/pi);grid on;
xlabel('frequency in pi units');
ylabel('Phase in pi Radians');
title('Phase Response');
R是抽取因子或内插因子,取决于你要上采样(提高采样速率)还是要下采样(降低采样率)
M是延迟因子
N是所用CIC的级数
详见matlab help CIC Decimation和CIC Interpolation
再问: MTLAB help里面没有我需要的,RMN我也知道是什么,我就是不懂,为什么CIC是由积分器和梳状器组成,那上面这段代码里面并没有写入积分器和梳状器,而是直接设计的。并且主要是num=sin(R*M*w/2); den=sin(w/2)+eps; 这两句不懂。。求解答,满意一定加分。。。再次拜谢。
再答: CIC在时域上看实际上就是一个矩形序列或矩形窗,如果矩形序列的宽度为L, 系统函数H(z)=(1-Z^(-L))/(1-z^(-1)), 在单位圆上看就是H(e^(jw)=(1-e^(-jwL))/(1-e^(-jw)),用欧拉公式化简得 H(e^(jw)=-e^(-jw(L-1)/2)*sin(Lw/2)/sin(w/2) 程序中你问的第一句就是幅度的分子部分,num=sin(R*M*w/2)=sin(Lw/2) 第二句就是幅度的分母部分,den=sin(w/2)+eps,eps是为了防止分母等于0. num./den=sin(Lw/2)/sin(w/2)
再问: 还有2个问题,为什么:H=num除以den,那么H就是系统函数了,这个理论是什么。第二个问题就是,这段代码里面怎么没看到积分器和梳状器,难道R就代表了积分器和梳状器的级数。是不是编写CIC滤波器只要直接编写。。。谢谢,我会将我手上的分都给你的。
再答: CIC在时域上看实际上就是一个矩形序列或矩形窗,如果矩形序列的宽度为L, H(e^(jw)=(1-e^(-jwL))/(1-e^(-jw)),用欧拉公式化简得 H(e^(jw)=-e^(-jw(L-1)/2)*sin(Lw/2)/sin(w/2) 程序中你问的第一句就是幅度的分子部分,num=sin(R*M*w/2)=sin(Lw/2) 第二句就是幅度的分母部分,den=sin(w/2)+eps,eps是为了防止分母等于0. num./den=sin(Lw/2)/sin(w/2)就是H的实系数部分 系统函数H(z)=(1-Z^(-L))/(1-z^(-1))中分母是积分器,分子就是一个梳状滤波器这两个的首字母即是IC,当N级级联后就是CIC 其实你追问的问题在上次解答中就可以找打答案