当前位置:文档之家› 数字信号处理实验报告

数字信号处理实验报告

数字信号处理实验利用FFT对信号进行频谱分析一 实验目的学习用FFTFFT 。

二 实验原理用FFT 对信号作频分析是学习数字信号处理的重要内容,经常需要进行分析的信号是模拟信号的时域离散信号。

对信号进行谱分析的重要问题是频谱分辨率D 和分析误差。

频谱分辨率直接和FFT 的变换区间N 有关,因为FFT 能够实现的频率分辨率是2π/N ,因此要求2π/N 小于等于D 。

可以根据此式选择FFT 的变换区间N 。

误差主要来自于用FFT 作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N 较大时,离散谱的包络才能逼近连续谱因此N 要适当选择大一些。

三 实验内容1.模拟信号)8cos(5)4sin(2)(t t t x ππ+=,以)1:0(01.0-==N n n t 进行采样,求:(1)N =40点FFT 的幅度频谱,从图中能否观察出信号的2个频谱分量?(2)提高采样点数,如N =128,256,512,再求该信号的幅度频谱,此时幅度频谱发生了什么变化?信号的2个模拟频率和数字频率各为多少?FFT 频谱分析结果与理论上是否一致?实验代码:clc;clear all;N=40;% N=128;%%%%%%对N 的值进行改变% N=256;% N=512;n=0:N-1;t=0.01*n;x=2*sin(4*pi*t)+5*cos(8*pi*t);x1=x(1:N);X1=fft(x1,2048);figure,subplot(211),plot(0:N-1,x1);xlabel('n');ylabel('x(n)');title('时域波形');grid; subplot(212),plot(abs(X1));xlabel('k');ylabel('|X(k)|');title('幅频特性');grid; set(gcf,'color','w');N=40N=128N=256N=512答:N=40点FFT的幅度频谱,有信号的两个频谱分量,信号的幅度增加。

模拟频率为77kHz,1967kHz,数字信号为967680Hz。

FFT频谱分析结果与理论上是一致的。

MATLAB的相关程序或simlink图四、实验总结频谱分辨率的理解:在对信号做FFT时,频率的分辨率与N点的大小有关,N越大,分辨率越高,但要注意的是N的大小指的是对信号的采样数,一定要携带信号的信息,如果单纯的添加值为零的采样点是无法提高频谱分辨率的。

数字信号处理实验FIR数字滤波器设计一实验目的设计和应用FIR低通滤波器。

掌握FIR数字滤波器的窗函数设计法,了解设计参数(窗型、窗长)的影响。

二、实验原理以低通滤波器为例,其常用的设计指标有:1.通带边缘频率f p(数字频率为Ωp)2.阻带边缘频率f st (数字频率为Ωst)3.通带内最大纹波衰减δp=-20log10(1-αp),单位为dB4.阻带最小衰减αs=-20log10(αs),单位为dB5.阻带起伏αs6.通带峰值起伏αp其中,以1、2、3、4条最为常用。

5、6条在程序中估算滤波器阶数等参数时会用到。

数字频率 = 模拟频率/采样频率三、实例分析例1 用凯塞窗设计一FIR低通滤波器,通带边界频率Ωp=0.3pi,阻带边界频率Ωs=0.5pi,阻带衰减δs不小于50dB。

方法一:手动计算滤波器阶数N和β值,之后在通过程序设计出滤波器。

第一步:通过过渡带宽度和阻带衰减,计算滤波器的阶数B和β值。

第二步:通过程序设计滤波器。

程序如下:b = fir1(29,0.4,kaiser(30,4.55));[h1,w1]=freqz(b,1);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;xlabel('归一化频率/p') ;ylabel('幅度/dB') ;波形如下:方法二:采用[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器。

这里的函数kaiserord(f,a,dev)或者kaiserord(f,a,dev,fs):f为对应的频率,fs 为采样频率;当f用数字频率表示时,fs则不需要写。

a=[1 0]为由f指定的各个频带上的幅值向量,一般只有0和1表示;a和f长度关系为(2*a的长度)- 2=(f的长度)devs=[0.05 10^(-2.5)]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a相等,计算公式:阻带衰减误差=αs ,通带衰减误差=αp,可有滤波器指标中的3、4条得到。

fs缺省为2Hz。

程序如下:fcuts = [0.3 0.5]; %归一化频率omega/pi,这里指通带截止频率、阻带起始频率mags = [1 0];devs = [0.05 10^(-2.5)];[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');freqz(hh);波形如下:实际中,一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W(ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。

函数remezord中的数组fedge为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev是通带和阻带的波动,fs是采样频率单位为Hz。

例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率fc=800Hz,阻带边界fr=1000Hz,通带波动阻带最小衰减At=40dB,采样频率fs=4000Hz。

解:在MATLAB中可以用remezord 和remez两个函数设计程序如下:fedge=[800 1000];mval=[1 0];dev=[0.0559 0.01];fs=4000;[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs); b=remez(N,fpts,mag,wt);[h,w]=freqz(b,1,256);plot(w*2000/pi,20*log10(abs(h)));grid;xlabel('频率/Hz') ;ylabel('幅度/dB');波形如下:例3 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:通带边缘频率:Ωp1=0.45pi,Ωp2=0.65pi,通带峰值起伏:δ1<=1[dB]。

阻带边缘频率:Ωs1=0.3pi,Ωs2=0.8pi,最小阻带衰减:δ2>=40[dB] 。

方法一:窗函数法程序如下:[n,wn,bta,ftype]=kaiserord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0. 1087 0.01]);%用kaiserord函数估计出滤波器阶数n和beta参数h1=fir1(n,wn,ftype,kaiser(n+1,bta),'noscale');[hh1,w1]=freqz(h1,1,256);figure(1)subplot(2,1,1)plot(w1/pi,20*log10(abs(hh1)))gridxlabel('归一化频率w');ylabel('幅度/db');subplot(2,1,2)plot(w1/pi,angle(hh1))gridxlabel('归一化频率w');ylabel('相位/rad');波形如下:滤波器系数为:h1 =Columns 1 through 80.0041 0.0055 -0.0091 -0.0018 -0.0056-0.0000 0.0391 -0.0152Columns 9 through 16-0.0381 0.0077 -0.0293 0.0940 0.0907 -0.2630 -0.0517 0.3500Columns 17 through 24-0.0517 -0.2630 0.0907 0.0940 -0.02930.0077 -0.0381 -0.0152Columns 25 through 310.0391 -0.0000 -0.0056 -0.0018 -0.00910.0055 0.0041如果直接用freqz(h1,1,256),得幅频特性和相频特性曲线:方法二:等波纹法设计程序如下:[n,fpts,mag,wt]=remezord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);%用remezord函数估算出remez函数要用到的阶n、归一化频带边缘矢量fpts、频带内幅值响应矢量mag及加权矢量w,使remez函数设计出的滤波器满足f、a及dev指定的性能要求。

h2=remez(n,fpts,mag,wt);%设计出等波纹滤波器[hh2,w2]=freqz(h2,1,256);figure(2)subplot(2,1,1)plot(w2/pi,20*log10(abs(hh2)))gridxlabel('归一化频率w');ylabel('幅度/db');subplot(2,1,2)plot(w2/pi,angle(hh2))gridxlabel('归一化频率w');ylabel('相位/rad');h2波形如下:滤波器系数如下:h2 =Columns 1 through 9-0.0013 0.0092 -0.0255 -0.0642 0.11770.0922 -0.2466 -0.0466 0.3116Columns 10 through 17-0.0466 -0.2466 0.0922 0.1177 -0.0642 -0.0255 0.0092 -0.0013如果直接用freqz(h2,1,256);得幅频特性和相频特性曲线:方法三:采用FDATool工具这种方法需要事先计算出滤波器的阶数,bate值,然后设置相应参数,最后生成滤波器。

设置界面如下图所示:将上述圈圈的区域设置好之后,生成滤波器,最后通过analysis菜单可以观察生成的滤波器的各种特性曲线和滤波器系数。

相关主题