在本数字信号处理实验报告中,我们探讨了离散傅里叶变换(DFT)、快速傅里叶变换(FFT)及其在MATLAB环境中的应用。实验涵盖了信号的卷积、傅里叶变换以及噪声对信号的影响。
我们观察到信号`x`和滤波器`h`都是由四个1组成的序列。通过MATLAB的`conv`函数进行了这两个序列的卷积,得到的结果`y`被用`stem`函数在第一副图中表示出来。卷积在信号处理中常用于模拟线性时不变系统对输入信号的影响。
接着,为了利用FFT进行计算,原始序列`x`和`h`都通过添加零值扩展到了8个元素(`x_ex`和`h_ex`)。然后,分别对扩展后的序列进行FFT计算得到`X`和`H`。通过点乘(.*)操作后,再用`ifft`进行逆傅里叶变换得到`y_fast`,其结果同样用`stem`函数在第二副图中展示。这里,FFT提供了一种更高效的方式来执行离散时间信号的卷积。
此外,实验还对比了使用直接DFT(dft函数)与FFT(fft函数)计算卷积的结果。在第三副图中,我们看到`y_dft`是直接DFT方法得到的结果,其绝对值被用来绘制。这进一步验证了FFT在计算效率上的优势。
实验进一步探讨了DFT在频域分析中的应用。给定一个10点的信号`x`,它是两个不同频率正弦波的组合。通过对信号进行10点DFT,我们在第四副图中展示了其频谱,其中频率以π单位表示。通过补零将信号扩展到100点,并再次进行DFT,我们得到了第五副图的“补零后频谱”。这显示了补零如何提高频率分辨率。第六副图则展示了当抽样点数进一步增加到50点时,频谱的变化。
实验引入了随机噪声来污染信号。原始信号`x`是一个基于余弦函数的序列,而`noise_x`是添加了高斯白噪声的版本。对噪声污染的信号进行FFT后,我们在第七副图中描绘了其频谱,这揭示了噪声在频域中的分布。
通过这个实验,我们可以深入理解DFT、FFT以及它们在数字信号处理中的作用,包括信号的卷积、频谱分析以及噪声对信号的影响。同时,实验也强调了采样点数对频谱分辨率的重要性。