武科大信号处理综合课程设计Word下载.docx
《武科大信号处理综合课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《武科大信号处理综合课程设计Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
t)
其包含500Hz、1500Hz和5000Hz频率成分,如图1所示。
图1混合正弦波信号及频谱图
2、由于最高频率为5000Hz,故采样频率应大于10000Hz,实际设计中考虑到余量,采样频率可以取为20000~30000Hz即可。
为显示出更好的滤波效果,本设计采用30000Hz频率进行采样。
三、IIR滤波器的设计
(1)第一步,为分离出500Hz的正弦波成分,可以考虑采用低通滤波器,屏蔽掉1500Hz和5000Hz频率成分。
在这里,我采用了巴特沃斯低通滤波器的设计方法,MATLAB中提供了用于设计巴特沃斯原型低通滤波器的函数,其调用格式如下:
[N,Wn]=buttord(wp,ws,rp,rs,’s’):
其中,wp和ws分别是通带边界频率和阻带边界频率,单位为rad/s;
rp和rs分别为通带最大衰减和阻带最小衰减;
返回的参数N和Wn分别为滤波器的阶数和3dB截止频率。
为实现500Hz频率分量的分离,可将通带边界频率设置为wp1=2π
600rad/s,阻带边界频率ws1=2π×
1500rad/s,通带最大衰减rp=1dB,阻带最小衰减rs=60dB。
并采用冲激响应不变法将模拟滤波器转换成数字滤波器。
巴特沃斯低通滤波器频率响应图如下:
图2巴特沃斯低通滤波器频率响应
同时将横轴归一化为频率Hz。
混合正弦波经巴特沃斯低通滤波器后便可分理出500Hz正弦波信号,其效果如图3所示:
图3500Hz频率分量的时域和频谱图
(2)第二步,为分离出1500Hz的正弦波成分,可以考虑采用带通滤波器,屏蔽掉500Hz和5000Hz频率成分。
设置带通滤波器通带下限频率和上限频率分别为1300Hz、1700Hz,中心频率为1500Hz,带宽B=400Hz;
阻带下限频率和上限频率分别为600Hz、4000Hz;
通带最大衰减为1dB,阻带最小衰减为100dB,采用巴特沃斯带通滤波器设计。
巴特沃斯带通滤波器频率响应图如下:
图4带通滤波器频率响应
混合正弦波经巴特沃斯带通滤波器后便可分理出1500Hz正弦波信号,其效果如图5所示:
图51500Hz频率分量的时域和频谱图
(3)第三步,为分离出5000Hz的正弦波成分,可以考虑采用高通滤波器,屏蔽掉500Hz和1500Hz频率成分。
在高通滤波器设计中,将通带截止频率设置为5000Hz,阻带截止频率为4000Hz,并采用双线性变换法设计数字滤波器;
通带最大衰减为1dB,阻带最小衰减为60dB。
巴特沃斯高通滤波器频率响应图如下:
图6高通滤波器频率响应
混合正弦波经巴特沃斯高通滤波器后便可分理出5000Hz正弦波信号,其效果如图7所示:
图75000Hz频率分量的时域和频谱图
四、FIR滤波器的设计
MATLAB提供了函数w=hamming(N):
产生一长度为N的哈明窗;
还有用来设计FIR滤波器的函数h=fir1(N-1,Wc,’ftype’,Window(N)):
其中N为滤波器的阶数;
Wc是截止频率,其取值在0~1之间,它是以π为基准频率的标称值,设计低通和高通滤波器时Wc是标量,设计带通滤波器时Wc是1
2的向量;
设计低通和高通滤波器时,无需’ftype’,Window表示设计滤波器所采用的窗函数类型,Window的长度为N,若Window缺省,则fir1默认使用哈明窗;
h对应设计好的滤波器的系数h(n)。
(1)滤除500Hz频率成分,设计FIR低通滤波器,取截止频率wp1=0.0191π,窗宽N=180。
FIR低通滤波器幅频和相频特性如图8所示,分离效果如图9所示。
图8FIR低通滤波器幅频和相频特性
图9500Hz频率分量的时域和频谱图
(2)滤除1500Hz频率成分,设计FIR带通滤波器,取截止频率wp2=[0.066,0.16];
,窗宽N=200。
FIR带通滤波器幅频和相频特性如图10所示,分离效果如图11所示。
图10FIR带通滤波器幅频和相频特性
图111500Hz频率分量的时域和频谱图
(3)滤除5000Hz频率成分,设计FIR高通滤波器,取截止频率wp3=[0.30,0.65],窗宽N=100。
FIR高通滤波器幅频和相频特性如图12所示,分离效果如图13所示。
图12FIR带通滤波器幅频和相频特性
图135000Hz频率分量的时域和频谱图
五、算法设计思路
对于IIR和FIR数字滤波器的设计框图大致如下图所示:
六、调试分析过程
(1)无论是IIR还是FIR数字滤波器设计,采样频率的选择很重要,因为采样频率过小会导致混合正弦信号x(t)中的高频成分5000Hz的频率分量无法分离,所以采样频率至少要大于x(t)中最高频的2倍,在上述设计中采用的30kHz就能很好满足要求。
(2)在低通,带通和高通滤波器设计中,通带和阻带的截止频率选择对结果也有一定的影响。
由于混合频率成分分别为500Hz,1500Hz及5000Hz,所以在选择相应的fp、fs时最好在一定的要求范围内。
否则,有可能造成分离结果不理想。
(3)任务要求输出的单个正弦波信号中其他正弦成分的衰减不小于50dB,故在IIR数字滤波器设计时要满足rs
50dB,同时取rp=1dB。
具体操作时,可以在实验中多次尝试取不同数值并观察对应滤波器频率响应的变化及分离效果,从而获得使结果更为理想的数值。
七、总结:
在本次课程设计中,我再一次体会到了理论与实际相结合的重要性,光有纯粹的理论知识远远不够,而如何应用于实际的课程设计中更是一种能力的彰显。
这次的课程设计有四个题目可供选择,在选题时也颇为纠结,我原本是想做频分复用通信模型仿真研究,但是由于各种考试加上时间紧迫性,便改选了这个信号谱分析和滤波器设计。
通过本次IIR数字滤波器的设计,我进一步加深了对模拟滤波器基本类型、特点和主要设计指标的了解,学回了用MATLAB函数设计模拟原型低通滤波器;
同时,在设计中,我分别采用了冲激响应不变法和双线性变换法将模拟滤波器转换为数字滤波器,从而对两者的区别又有了进一步的认识和理解。
而对FIR数字滤波器的设计,我得以进一步学习用窗函数法设计FIR数字滤波器的原理及方法,同时在实验中了解各种窗函数对滤波器性能的影响。
此外,在运用IIR和FIR两种数字滤波器设计的过程中,我对与两者之间的区别也有了更为深层的认识。
从性能上来说,IIR可以用较低的阶数获得高的选择性,所用存储单元少,成本低,效率高;
而对于同样的滤波器指标,FIR数字滤波器所要求的阶数比IIR高5~10倍,结果成本较高,延时较大。
从结构上看,IIR数字滤波器必须采用递归结构,极点必须在单位元内,否则系统不稳定;
FIR数字滤波器主要采用非递归结构,不存在稳定性问题,同时FIR数字滤波器可以采用快速傅里叶变换算法,在相同阶数下,运算速度快很多。
总而言之,在借助于MATLAB这个软件工具下,课程设计让我们很好地把所学的知识应用起来。
虽然完成了课程设计的内容,但我要学习的东西还有很多,与此同时,我也会努力争取把之前已经做了大半部分的频分复用通信模型仿真研究项目给完成!
八、附录
MATLAB源代码及部分注释:
(包括IIR数字滤波器设计和FIR数字滤波器设计)
(1)IIR数字滤波器设计部分
%**********混合正弦波信号x(t)和频谱图**********
clear;
clc;
clf;
fs=30000;
%采样频率
td=1/fs;
%采样间隔
f1=500;
f2=1500;
f3=5000;
%3个混合正弦波频率
t=0:
td:
500*td;
x=sin(2*pi*f1.*t)+sin(2*pi*f2.*t)+sin(2*pi*f3.*t);
%混合正弦波信号x(t)
disp('
********IIR滤波器设计********'
)
figure
(1)
subplot(211);
plot(t,x);
xlabel('
t'
);
ylabel('
x(t)'
title('
混合正弦波信号x(t)'
axistight;
gridon
X=fft(x,2048);
%对信号作FFT变换
n=fs*(0:
1023)/2048;
subplot(212);
plot(n,abs(X(1:
1024)));
单位:
Hz'
幅值'
混合正弦波信号x(t)频谱图'
axis([0,5500,0,250]);
%**********IIR巴特沃斯低通滤波器**********
fp1=600;
fs1=1500;
wp1=2*pi*fp1;
ws1=2*pi*fs1;
rp=1;
rs=60;
[N,Wn]=buttord(wp1,ws1,rp,rs,'
s'
[b,a]=butter(N,Wn,'
[b1,a1]=impinvar(b,a,fs);
%冲激响应不变法设计数字滤波器
[h1,w1]=freqz(b1,a1,512);
h1=20*log10(abs(h1));
figure
(2);
w=w1/(2*td*pi);
%归一化频率为Hz
plot(w,h1);
频率:
幅值:
dB'
巴特沃斯低通滤波器频率响应'
axis([0,5500,-150,20]);
gridon;
%**********500Hz频率分离**********
f1=filter(b1,a1,x);
%滤波
figure(3)
plot(t,f1);
x1(t)'
500Hz正弦波信号'
X=fft(f1,2048);
500Hz正弦波信号x(t)频谱图'
%**********IIR巴特沃斯带通滤波器**********
fp2=[1300,1700];
%通带上下限频率
fs2=[600,4000];
%阻带上下限频率
wp2=2*pi*fp2;
ws2=2*pi*fs2;
rs=100;
[N,Wn]=buttord(wp2,ws2,rp,rs,'
[b2,a2]=impinvar(b,a,fs);
%冲激响应不变法
[h2,w2]=freqz(b2,a2,512);
h2=20*log10(abs(h2));
w=w2/(2*td*pi);
%归一化单位为Hz
figure(4)
plot(w,h2)
Hz'
幅度:
dB'
带通滤波器频率响应'
axis([0,9000,-160,20]);
%**********1500Hz频率分离**********
f2=filter(b2,a2,x);
%滤波
figure(5)
plot(t,f2);
x2(t)'
1500Hz正弦波信号'
X=fft(f2,2048);
1500Hz正弦波信号x(t)频谱图'
%**********IIR巴特沃斯高通滤波器**********
fp3=5000;
%通带截止频率
fs3=4000;
%阻带截止频率
wp3=2*pi*fp3;
ws3=2*pi*fs3;
[N,Wn]=buttord(wp3,ws3,rp,rs,'
high'
'
[bz3,az3]=bilinear(b,a,fs);
%双线性变换法
[h3,w3]=freqz(bz3,az3,512);
h3=20*log10(abs(h3));
w=w3/(2*td*pi);
figure(6)
plot(w,h3)
幅值:
高通滤波器频率响应'
%**********5000Hz频率分离**********
f3=filter(bz3,az3,x);
%滤波
figure(7)
plot(t,f3);
x3(t)'
5000Hz正弦波信号'
X=fft(f3,2048);
5000Hz正弦波信号x(t)频谱图'
axis([0,10000,0,250]);
(2)FIR数字滤波器设计部分
clf
%采样频率
%采样间隔
%3个混合正弦波频率
x=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);
%对信号作FFT变换
axis([0,5500,0,300]);
%**********FIR低通滤波器**********
wp1=0.06;
%截止频率
N=180;
%窗宽
h1=fir1(N-1,wp1,hamming(N));
%采用汉明窗设计
y1=fftfilt(h1,x);
%利用重叠相加法基于FFT的FIR有限长单位冲激响应滤波
w=0:
0.01:
pi;
H=freqz(h1,1,w);
dBH=20*log10(abs(H)/max(abs(H)));
figure
(2)
plot(w/(2*pi*td),dBH);
%归一化频率为Hz
分贝数:
FIR低通滤波器的幅频特性'
axis([0,5500,-80,20]);
plot(w/(2*pi*td),180/pi*unwrap(angle(H)));
度'
FIR低通滤波器的相频特性'
axis([0,6000,-1500,0]);
plot(t,y1);
X=fft(y1,2048);
%滤波后对y1进行FFT变换
%**********FIR带通滤波器**********
wp2=[0.066,0.16];
%上下限通带频率
N=200;
h2=fir1(N,wp2);
%FIR滤波器设计
y2=fftfilt(h2,x);
%利用重叠相加法基于FFT的FIR有限长单位冲激响应滤波
[H,f]=freqz(h2,1,1024,fs);
%在0~2/fs内选取1024个频率点,计算相应的频率响应
dBH=20*log10(abs(H));
plot(f,dBH);
FIR带通滤波器的幅频特性'
axis([0,5500,-80,20])
plot(f,180/pi*unwrap(angle(H)));
FIR带通滤波器的相频特性'
axis([0,7000,-2200,500]);
plot(t,y2);
X=fft(y2,2048);
%滤波后对y2进行FFT变换
%**********FIR高通滤波器**********
wp3=[0.30,0.65];
%阻带和通带截止频率
N=100;
h3=fir1(N,wp3);
%FIR滤波器
y3=fftfilt(h3,x);
[H,f]=freqz(h3,1,1024,fs);
%在0~2/fs内选取1024个频率点,计算相应频率响应
FIR高通滤波器的幅频特性'
FIR高通滤波器的相频特性'
axis([0,10000,-3000,500]);
plot(t,y3);
X=fft(y3,2048);
%滤波后对y3进行FFT变换
axis([0,6000,0,300]);