CIC 滤波器——不同长度的5级CIC滤波器的频谱特性
为进一步降低CIC滤波器的旁瓣电平,可采用多级CIC滤波器级联的方法。
%
% E6_4_MultCIC.m
% 用Matlab仿真不同长度的5级CIC滤波器的频谱特性。
%
M = 2; %滤波器的长度
b = ones(1,M);
delta = [1,zeros(1,1023)];
s1 = filter(b,1,delta); %求取滤波器冲激响应
s2 = filter(b,1,s1); %求取滤波器冲激响应
s3 = filter(b,1,s2); %求取滤波器冲激响应
s4 = filter(b,1,s3); %求取滤波器冲激响应
s = filter(b,1,s4); %求取滤波器冲激响应
Spec = 20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec2 = Spec-max(Spec);
f = 0:length(Spec)-1;
f = 2*f/(length(Spec)-1); %对频率轴进行归一化处理
M=5; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s1=filter(b,1,delta); %求取滤波器冲激响应
s2=filter(b,1,s1); %求取滤波器冲激响应
s3=filter(b,1,s2); %求取滤波器冲激响应
s4=filter(b,1,s3); %求取滤波器冲激响应
s=filter(b,1,s4); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec5=Spec-max(Spec);
M=7; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s1=filter(b,1,delta); %求取滤波器冲激响应
s2=filter(b,1,s1); %求取滤波器冲激响应
s3=filter(b,1,s2); %求取滤波器冲激响应
s4=filter(b,1,s3); %求取滤波器冲激响应
s=filter(b,1,s4); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec7=Spec-max(Spec);
M=8; %滤波器长度
b=ones(1,M);
delta=[1,zeros(1,1023)];
s1=filter(b,1,delta); %求取滤波器冲激响应
s2=filter(b,1,s1); %求取滤波器冲激响应
s3=filter(b,1,s2); %求取滤波器冲激响应
s4=filter(b,1,s3); %求取滤波器冲激响应
s=filter(b,1,s4); %求取滤波器冲激响应
Spec=20*log10(abs(fft(s))); %求取滤波器频谱特性
Spec8=Spec-max(Spec);
figure(2)
% plot(f,Spec2,f,Spec5,f,Spec7,f,Spec8);axis([0 1 -50 0]);grid;
% xlabel('归一化频率');ylabel('幅度(dB)');
% legend('M=2','M=5','M=7','M=8');
% grid;
plot(f,Spec2,'-',f,Spec5,'.',f,Spec8,'--');axis([0 1 -200 0]);
xlabel('归一化频率');ylabel('幅度(dB)');
legend('M=2','M=5','M=8');
title('不同长度的5级CIC滤波器的频谱特性','fontsize',10);
grid;
由图可知,相对于单级CIC滤波器而言,旁瓣电平衰减到67.3dB。同时,多级CIC滤波器主瓣电平值下降也要比单级快得多。也就是说,在相同的通频带内,滤波器的通带衰减也明显增加。