1 3 2 上传密码: 1234 注意:请按时上传作业!到时将自动关机! 14:07:43
程序、图、结果 14:07:43
2019/2/28 实验一 离散傅立叶变换的性质及应用 14:07:43
一、实验目的 1.熟悉 MATLAB 编程; 2.了解 DFT 的性质及其应用。 14:07:43
二、实验内容 1. 利用 DFT 实现两个序列的线性卷积运算,并研究DFT点数与混叠的关系。 2. 利用FFT/IFFT实现简单的频域滤波。 特别强调:如果只是直接运行给出的程序,而不加以改造,则本次实验成绩最多只给一半的成绩。 14:07:43
1.用DFT实现两个序列的卷积运算 后取主值序列的结果. 14:07:43
提示1: %用DFT实现循环卷积 x = [1 1 1]; y = [2 3 4 5]; N = 5; XK = fft(x, N); YK = fft(y, N); f = ifft(XK .* YK); 14:07:43
实验要求: (1)自己构造两个有限长序列 x(n)、h(n); (2)利用conv函数计算两个序列的线性卷积; 提示:y=conv(x,h); (3)分别计算不同点的循环卷积(利用FFT/IFFT计算);什么时候循环卷积与线性卷积相同?请总结规律。 14:07:43
自己构造有限长的序列x[], y[]: x = ???; %用自己的学号构造有限长序列x; y = ???; %自己任意构造有限长序列y; N = ???; % 根据序列x,y的长度选择3个N值 XK = fft(x, N); YK = fft(y, N); f = ifft(XK .* YK); figure(1); stem(f); title(['用DFT计算线性卷积: N=' num2str(N)]); ycov=conv(x,y); %调用conv计算线性卷积 figure(2); stem(ycov); title('调用CONV计算线性卷积'); 14:07:43
2.利用FFT/IFFT实现简单的频域滤波 要求与思路: (1)构造一低频离散信号f; (2)在此低频信号上添加高频随机噪声得到混合信号g; (3)对信号g进行FFT变换得到其幅度谱和相位谱; (4)对高于某个频率的幅度谱全部置为0; (5)利用IFFT对频谱做反变换得到滤波后的信号f’; (6)画图比较 f 和 f’。 --------部分提示见下页…. 14:07:43
y1 = sin(x1*0.3); %自己构造有用的信号/序列 noise = rand(1,nx) - 0.5; x1 = [1:nx]; y1 = sin(x1*0.3); %自己构造有用的信号/序列 noise = rand(1,nx) - 0.5; y2 = y1 + noise; figure(1); plot(x1,y1,'r',x1,y2,'b:'); XXX = fft(y2); figure(2); plot(abs(XXX)); title('信号的幅度谱'); %改造频谱,实现滤波 for i = 10 : nx-10+1 %自己选择合适滤波范围 XXX(i) = 0; end f1 = ifft(XXX); figure(3); plot(x1,y1,'r',x1,f1,'b:'); title('滤波的效果'); 14:07:43
14:07:43
设置为0 14:07:43
14:07:43
附加题目: 验证DFT的线性性质 自己编写程序,验证如下的DFT的线性性质: 要求:序列x[n]根据自己的学号来构造。 14:07:43
特别强调:如果只是直接运行给出的程序,而不加以改造,则本次实验成绩最多只给一半的成绩。 14:07:43