2019/5/21 实验三 离散傅立叶变换的性质及应用 19:21:59
一、实验目的 1.熟悉 MATLAB 编程; 2.了解 DFT 的性质及其应用。 19:21:59
二、实验内容 1、利用 DFT 实现两个序列的线性卷积运算,并研究DFT点数与计算结果的关系。 2、分析滤波器的相位谱特性对滤波结果的影响 3、各种线性相位FIR的特性 19:21:59
1、用DFT实现两个序列的线性卷积运算 后取主值序列的结果. 19:21:59
实验要求: (1)自己构造两个有限长序列 x(n)、h(n); (2)利用conv函数计算两个序列的线性卷积; 提示:y=conv(x, h); (3)分别计算不同点(测试3个点)的循环卷积(利用FFT/IFFT计算);什么时候循环卷积与线性卷积相同?请总结规律。 19:21:59
提示1: %用DFT实现N点循环卷积 x = [1 1 1]; y = [2 3 4 5]; N = 5; XK = fft(x, N); YK = fft(y, N); f = ifft(XK .* YK); 19:21:59
2. 滤波器的相位谱特性对滤波结果的影响 自己构造一个离散信号y(n); 计算其DFT频谱(用fft函数); 保持幅度谱信息不变,改造其相位信息: (1)原相位谱加上任意相位 (2)原相位谱加上线性相位 对改造后的频谱做IDFT(用ifft函数),得到yy1(n)和 yy2(n); 比较y(n) 和 yy1(n)、yy2(n),分析讨论结果。 19:21:59
通带 滤波器特性 任意相位谱 线性相位谱 19:21:59
%1)自己构造一个任意序列代表某个滤波器的相位谱 filterPha = ??; phaNew = pha + filterPha; y = ??; %自己构造离散信号y ffty = fft(y); amp = abs(ffty); pha = angle(ffty); %1)自己构造一个任意序列代表某个滤波器的相位谱 filterPha = ??; phaNew = pha + filterPha; cc = amp.*exp(i*phaNew); yy1 = ifft(cc,'symmetric'); %2)自己构造一个线性序列代表某个滤波器的相位谱 … yy2 = ifft(…); %用plot(…)画图对比显示y,yy1,yy2; 19:21:59
注意: 自己构造的序列至少包含2个以上的频率成分(即不要构造诸如y=sin(x)形式的简单序列),以便观察不同频率成分上的相位改变对信号的影响; 加上去的相位谱的值尽量大一些(线性相位谱的斜率n0要大于1),才能看到时间域信号平移的效果。 19:21:59
19:21:59
兰色——原始 红色——线性相位 绿色——任意相位 19:21:59
3、各种线性相位FIR的特性 1)自己分别构造四种类型的线性相位FIR: 1型:冲激响应h(n)长度为奇数,且偶对称 2型:冲激响应h(n)长度为偶数,且偶对称 3型:冲激响应h(n)长度为奇数,且奇对称 4型:冲激响应h(n)长度为偶数,且奇对称 2)分别用zplane()显示零点极点图,用freqz()和plot()计算并显示幅度谱和相位谱。总结规律。 3)附加题目:从构造的FIR滤波器中选择一个低通滤波器,构造信号(低频信号+高频噪声),用filter()进行滤波。观察结果。 19:21:59