运用 Matlab 实现 IIR 或 FIR 滤波系统,要求加入干扰的音频信号经过
滤波系统后,能够滤除 100KHz 的干扰信号,同时保留原有的音频信号,
要求绘制出滤波系统的频谱图,绘制出滤波前后音频信号的时域、频域对
比图。
实验内容三:编写 FFT 算法程序(此部分为选作内容)
分析 FFT 算法实现过程,运用 Matlab 软件实现 FFT 函数功能,要求运用自
行编写的 Matlab 程序实现对固定信号(自定义信号)的频谱分析,并绘制出频
谱图;然后将自己设计的 FFT 算法程序与 FFT 函数实现的频谱图相比较,分析
两个程序结果的差别及原因。
四、实验任务分解及思路
实验内容一:windows 系统中的“ding”音频信号的采集、分析、合成
通过分析任务内容,我们可以建立如图一所示程序框图,接下来将叙述整
体思路和编程思想。详细程序见附录。
1.把系统里面附带的“ding”文件复制到指定目录后,先利用 audioread 函
数获取音频序列 signal 以及采样频率 fs,鉴于音频信号是双声道,只取一个声
道进行信号处理,为接下来的实验做准备。接着根据实验要求用相关函数绘制
时域波形并利用 sound 函数进行回放。
2.算出获取的音频序列 signal 的长度后,找出大于 signal 的长度的 2 的指
数值 N,再利用 #t 函数对 signal 进行 N 点快速傅里叶变换并绘制出频谱图。
因为快速傅里叶变换具有对称性,所以只需要取序列前半部分进行分析。
3.观察频谱图,可发现信号的能量集中在两个频率上。所以接下来要用这
两个频率合成音频信号。要想将这两个频率信号筛选出来,可以 先 通 过
$ndpeaks 函数找到各个峰值点对应的位置。将其用变量表示之后,再用 sort
对峰值进行排序,找出两个最大值,再用 $nd 函数找到两点的位置,这样就知
道了两个峰值点对应的频率以及峰值大小。然后根据峰值生成两个对应频率的