数字信号处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理实验
利用FFT对信号进行频谱分析
一 实验目的
学习用FFT
FFT 。 二 实验原理
用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=40
N=128
N=256
N=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),单位为dB
4.阻带最小衰减αs=-20log10(αs),单位为dB
5.阻带起伏αs
6.通带峰值起伏α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,f
s
):
f为对应的频率,f
s 为采样频率;当f用数字频率表示时,f
s
则不需要写。
a=[1 0]为由f指定的各个频带上的幅值向量,一般只有0和1表示;a和f长度关系为(2*a的长度)- 2=(f的长度)
devs=[0.05 10^(-2.5)]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a相等,计算公式:
阻带衰减误差=α
s ,通带衰减误差=α
p
,可有滤波器指标中的3、4条得到。
f
s
缺省为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);
波形如下: