信号分析与处理实验报告2完成Word下载.docx
《信号分析与处理实验报告2完成Word下载.docx》由会员分享,可在线阅读,更多相关《信号分析与处理实验报告2完成Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
![信号分析与处理实验报告2完成Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/b88307d8-0e3c-4faf-b796-1535353c7a7e/b88307d8-0e3c-4faf-b796-1535353c7a7e1.gif)
再将
平面通过以下变换关系映射到z平面,即
从而得到s平面和z平面的单值映射关系为
,
一般来说,为了使模拟滤波器的某一频率与数字滤波器的任一频率有对应关系,可引入待定常数c,
将
代入到上式,可得
在MATLAB中,双线性Z变换可以通过bilinear函数实现,其调用格式为:
[Bz,Az]=bilinear(B,A,Fs);
其中B,A为模拟滤波器传递函数G(s)的分子分母多项式的系数向量,而Bz,Az为数字滤波器的传递函数H(z)的分子分母多项式的系数向量。
本次滤波器设计的主要方法是先设计低通模拟滤波器,然后转换为高通、带通数字滤波器。
在设计的全过程的各个步骤,matlab都提供相应的工具箱函数,使得IIR数字滤波器设计变得简单。
总的来说,我的设计思路主要有以下两种:
方案一:
从归一化模拟低通原型出发,先在模拟域内经频率变换成为所需类型的模拟滤波器;
然后进行双线性变换,由S域变换到Z域,而得到所需类型的数字滤波器。
模拟域双线性变换法
频率变换
图1先频率变换再离散
方案二:
先进行双线性变换,将模拟低通原型滤波器变换成数字低通滤波器;
然后在Z域内经数字频率变换为所需类型的数字滤波器。
数字域
双线性变换法频率变换
图2先离散再频率变换
以上两种方案都可以,我最后选择了第一种方案进行设计,即先在模拟域内经频率变换成为所需类型的模拟滤波器;
因为高通,带通滤波器的设计方法是先将要设计的滤波器的技术特性指标通过频率转换成模拟低通滤波器的技术指标,再根据这些性能指标设计出低通滤波器的传递函数,为了设计程序的简洁,故选择了方案一。
下面给出matlab程序:
实验程序:
【高通滤波器】
fp=400;
fs=300;
Rp=3;
Rs=35;
%衰减参数
FS=1000;
T=1/(FS);
wp=2*pi*fp;
ws=2*pi*fs;
%把数字域特征换成模拟域特征
Wp=wp/(FS);
Ws=ws/(FS);
%归一化数字频率
wp2=2*tan(Wp/2)/T;
ws2=2*tan(Ws/2)/T;
%频率预畸变
[N,Wn]=buttord(wp2,ws2,Rp,Rs,'
s'
);
[z,p,k]=buttap(N);
%Buttord低通原型
[Bap,Aap]=zp2tf(z,p,k);
%零极点转换为传递函数
figure
(1)
freqs(Bap,Aap);
%模拟低通频率响应
title('
模拟滤波器(低通原型)频率响应'
)
[Bbs,Abs]=lp2hp(Bap,Aap,Wn);
%模拟低通变高通
[numzdenz]=butter(N,Wp/pi,'
high'
Gz_HP=tf(numz,denz,T)%求传递函数
figure
(2)
freqs(Bbs,Abs);
模拟滤波器(高通)频率响应'
[Bbz,Abz]=bilinear(Bbs,Abs,FS);
%双线性变换
figure(3)
freqz(Bbz,Abz,512,FS);
数字滤波器频率响应'
[hw,w]=freqz(Bbz,Abz,512);
figure(4)
plot(w/pi,20*log(abs(hw)));
grid
axis([0,1,-740,50])
详细显示幅频响应'
xlabel('
w/pi'
ylabel('
幅度(dB)'
【带通滤波器】
fs1=200;
fs2=500;
fp1=300;
fp2=400
Rs=40;
FS=2000;
ws1=2*pi*fs1;
ws2=2*pi*fs2;
wp1=2*pi*fp1;
wp2=2*pi*fp2;
Ws1=ws1/(FS);
Ws2=ws2/(FS);
Wp1=wp1/(FS);
Wp2=wp2/(FS);
WS1=2*tan(Ws1/2)/T;
WS2=2*tan(Ws2/2)/T;
WP1=2*tan(Wp1/2)/T;
WP2=2*tan(Wp2/2)/T;
WP=WP2-WP1;
WS=sqrt(WS1*WS2);
[N,Wn]=buttord(WP,WS,Rp,Rs,'
模拟滤波器(低通原型)频响'
[Bbs,Abs]=lp2bp(Bap,Aap,WS,WP);
%模拟低通变带通
[numzdenz]=butter(N,[Wp1/piWp2/pi]);
Gz_BP=tf(numz,denz,T)%求传递函数
模拟滤波器(带通)频响'
数字滤波器频响'
实验图表:
【高通滤波器】
说明:
为了检验所设计的滤波器的性能,我选择了一个信号函数:
X=sin(2*pi*f1*t)+cos(2*pi*f2*t)+sin(2*pi*1*t)
选择合适的f1和f2,对输入信号进行了滤波,这时候需要借助Matlab中的y=filter(bz,az,x)函数,附加的程序如下:
【高通部分】
n=0:
180;
dt=1/FS;
t=n*dt;
%时间序列
f1=100;
f2=550;
%输入信号频率
x=sin(2*pi*f1*t)+cos(2*pi*f2*t)+sin(2*pi*t);
%输入信号
figure(5);
plot(t,x);
axis([0,0.05,-2,2]);
grid;
%绘制输入信号
输入信号'
时间t'
幅度'
y=filter(Baz,Aaz,x);
%对输入信号进行低通滤波
figure(6);
plot(t,y);
%绘制输出信号
低通滤波输出信号'
xlabel('
y=filter(Bbz,Abz,x);
%对输入信号进行高通滤波
figure(7);
高通通滤波输出信号'
【带通部分】
y=filter(Bbz,Abz,x);
%对输入信号进行带通滤波
figure(8);
axis([0,0.1,-2,2]);
带通滤波输出信号'
下面附上信号X分别通过高通和带通滤波器的仿真图:
对应的传递函数如右图:
结果分析:
由仿真结果可知,设计出的数字高通,带通的幅频响应均符合各自的特性,从模拟滤波器特性曲线可以看出,所设计的高通滤波器在大于400Hz为通带,其衰减均小于3dB;
小于300Hz为阻带,其衰减大于35dB。
而对于带通滤波器,在大于300Hz以及小于400Hz的范围内为通带,其他范围为阻带,它们的衰减指标也是满足要求的。
采用双线性变换法转换成的数字滤波器,由于转换法的频率压缩作用,使得ω=Π处的幅度降为零,无频谱混叠。
但曲线的形状与原模拟滤波器幅度特性曲线的形状差别较大。
这是由于该变换法的非线性造成的,T小一些,非线性的影响少一些。
由此总结一下双线性变换法设计滤波器的特点:
优点:
双线性变换的主要优点:
靠频率的严重非线性关系得到S平面与Z平面的单值一一对应关系,整个jΩ轴单值对应于单位圆一周,在零频率附近,Ω~ω接近于线性关系,Ω进一步增加时,ω增长变得缓慢,(ω终止于折叠频率处),所以双线性变换不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象。
缺点:
双线性变换法的缺点:
Ω与ω的非线性关系,导致数字滤波器的幅频响应相对于模拟滤波器的幅频响应有畸变,(使数字滤波器与模拟滤波器在响应与频率的对应关系上发生畸变)。
另外,一个线性相位的模拟滤波器经双线性变换后,滤波器就不再有线性相位特性。
虽然双线性变换有这样的缺点,但它目前仍是使用得最普遍、最有成效的一种设计工具。
这是因为大多数滤波器都具有分段常数的频响特性,如低通、高通、带通和带阻等,它们在通带内要求逼近一个衰减为零的常数特性,在阻带部分要求逼近一个衰减为∞的常数特性,这种特性的滤波器通过双线性变换后,虽然频率发生了非线性变化,但其幅频特性仍保持分段常数的特性。
【项目二窗函数法设计线性相位滤波器】
实验内容:
请选择合适的窗函数及N来设计一个线性相位低通滤波器:
要求其最小阻带衰减为-45dB,过渡带宽为
(1)已知
,求出
并画出
曲线。
(2)保留原有轨迹,画出用满足所给条件的其他几种窗函数设计出的
<
一>
.FIR滤波器原理:
FIR滤波器的系统输入输出差分方程为:
所以FIR滤波器的系统函数为:
由于FIR滤波器的单位脉冲响应h(n)是一个有限长序列,H(z)是
的(N−1)次多项式,它在Z平面上有(N−1)个零点,同时在原点有(N−1)阶重极点。
因此,H(z)永远稳定。
FIR滤波器设计的任务是选择有限长度的h(n),使传输函数
满足一定的幅度特性和线性相位要求。
由于FIR滤波器很容易实现严格的线性相位,所以FIR数字滤波器设计的核心思想是求出有限的脉冲响应来逼近给定的频率响应。
二>
.FIR滤波器的窗函数设计原理
窗函数法的设计思想是按照所要求的理想滤波器频率响应
,设计一个FIR滤波器,使之频率响应
来逼近
先由
的傅里叶反变换导出理想滤波器的冲激响应序列
,即:
由于
是矩形频率特性,所以
是一无限长的序列,且是非因果的,而要计的FIR滤波器的冲激响应序列是有限长的,所以要用有限长的序列h(n)来逼近无限长的序列
,最有效的方法是截断
,或者说用一个有限长度的窗口函数w(n)序列来截取
,即:
,实际的FIR数字滤波器的频率响应
逼近理想滤波器频率响应
的好坏,完全取决于窗函数的频率特性
加窗处理后,对理想矩形的频率响应产生以下几点影响:
(1)使理想频率特性不连续点处边沿加宽,形成一个过渡带,其宽度等于窗的频率响应的主瓣宽度;
(2)在截止频率的两边的地方即过渡带的两边,出现最大的肩峰值,肩峰的两侧形成起伏振荡,其振荡幅度取决于旁瓣的相对幅度,而振荡的多少,则取决于旁瓣的多少;
(3)改变N,只能改变窗谱的主瓣宽度,改变ω的坐标比例以及改变的绝对值大小,但不能改变主瓣与旁瓣的相对比例(此比例由窗函数的形状决定);
(4)对窗函数的要求:
a、窗谱主瓣尽可能窄,以获取较陡的过渡带;
b、尽量减小窗谱的最大旁瓣的相对幅度;
即能量集中于主瓣,使肩峰和波纹减小,增大阻带的衰减。
三>
。
MATLAB信号处理中提供的窗函数
如果我们使窗的主瓣宽度尽可能地窄,旁瓣尽可能地小,可以获得性能更好的滤波器,通过改变窗的形状来达到这个目的。
为此,用窗函数法设计FIR数字滤波器时,要根据给定的滤波器性能指标选择窗口宽度N和窗函数w(n)。
下面具体介绍几类类窗函数及其特性。
1.矩形窗
矩形窗函数的时域形式可以表示为:
它的频域特性为:
2.汉宁窗函数
汉宁窗函数的时域形式可以表示为:
其中,
为矩形窗函数的幅度频率特性函数。
汉宁窗函数的最大旁瓣值比主瓣值低31dB,但是主瓣宽度比矩形窗函数的主瓣宽度增加了1倍,为8π/N。
3.汉明窗函数
海明窗函数的时域形式可以表示为:
它的频域特性为:
海明窗函数的最大旁瓣值比主瓣值低41dB,但它和汉宁窗函数的主瓣宽度是一样大的。
运用窗函数设计数字滤波器
用于信号分析中的窗函数可根据滤波器的指标进行不同选择。
用于滤波器的窗函数,一般要求窗函数的主瓣宽度窄,以获得较好的过渡带;
旁瓣相对值尽可能少,增加通带的平稳度和增大阻带的衰减。
窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:
(1)通过傅里叶逆变换获得理想滤波器的单位脉冲响应
;
(2)由性能指标(阻带衰减的分贝数)根据窗函数的特征表的值确定满足阻带衰减的窗函数类型
,和窗口长度N;
(2)根据
,求实际滤波器的单位脉冲响应
(3)检验滤波器的性能。
下面根据上面步骤设计此题要求的FIR滤波器。
【画出各种窗函数的幅频响应】
Nwin=21;
Nwin-1;
figure(3)
forii=1:
4
switchii
case1
w=boxcar(Nwin);
stext='
矩形窗'
;
case2
w=hanning(Nwin);
汉宁窗'
case3
w=hamming(Nwin);
汉明窗'
case4
w=kaiser(Nwin);
恺撒窗'
end
posplot=['
2,2,'
int2str(ii)];
subplot(posplot);
stem(n,w);
holdon
plot(n,w,'
r'
n'
w(n)'
title(stext);
holdoff;
gridon;
End
得到下图:
【本实验程序】
rs=45;
w0=8*pi/51;
w0_ham=3.3;
N=2*pi*w0_ham/w0;
M=ceil(N-1)-1;
wc=0.5*pi;
hn=fir1(M,wc/pi,hamming(M+1))
subplot(311)
stem(0:
M,hn,'
.'
h(n)'
[hw]=freqz(hn,1,256);
subplot(312)
plot(w,20*log10(abs(h)));
w'
20*lg|H(e^jw)|'
幅频响应(dB)'
gridon
subplot(313)
plot(w,180/pi*unwrap(angle(h)))
频率/Hz'
相位/^o'
figure
(2);
plot(w,20*log10(abs(h)),'
-.'
clearall;
w0_kai=5.0;
N=2*pi*w0_kai/w0;
hn=fir1(M,wc/pi,kaiser(M+1));
holdon
g'
w0_han=5.0;
N=2*pi*w0_han/w0;
hn=fir1(M,wc/pi,hanning(M+1));
m:
'
w0_box=0.9;
N=2*pi*w0_box/w0;
hn=fir1(M,wc/pi,boxcar(M+1));
r--'
legend('
汉明'
'
恺撒'
汉宁'
矩形'
可以得到下面的图:
下面是求出的hn:
由上图各窗函数的幅频特性可以看到各种窗函数都具有明显的主瓣和旁瓣。
主瓣频宽和旁瓣的幅值衰减特性决定了窗函数的应用场合。
矩形窗具有最窄的主瓣,但也有最大的旁瓣峰值(第一旁瓣衰减为13dB);
不同窗函数在这两方面的特点是不同的,因此应根据具体的问题进行选择。
通常来讲,汉明窗和汉宁窗的主瓣,具有较小的旁瓣和较大的衰减速度,是较为常用的窗函数。
此外,主旁瓣频率宽度还与窗函数长度N有关。
增加窗函数长度N将减小窗函数的主瓣宽度,但不能减小旁瓣幅值衰减的相对值(分贝数),这个值是由窗函数决定的。
随着N的增大,主瓣和旁瓣都变窄,但第一旁瓣相对主瓣的幅值下降分贝数相同,第二旁瓣相对第一旁瓣幅值下降的分贝数也相同。
然而,随着N的增大,旁瓣数也增多,减少主瓣宽度和抑制旁瓣是一对矛盾,不可兼得,只能根据不同用途折衷处理。
综合最后一幅图,可以看出几种窗函数的性能差别:
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的截短产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。
矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;
布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高。
所以窗函数的选取可以归纳为:
如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用主瓣宽度比较窄而便于分辨的矩形窗,例如测量物体的自振频率等;
如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;
对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。