数字信号处理实验报告 (2).doc
- 文档编号:153213
- 上传时间:2022-10-04
- 格式:DOC
- 页数:29
- 大小:1.36MB
数字信号处理实验报告 (2).doc
《数字信号处理实验报告 (2).doc》由会员分享,可在线阅读,更多相关《数字信号处理实验报告 (2).doc(29页珍藏版)》请在冰豆网上搜索。
实验项目
音频信号采集、分析及处理
实验时间
第十四周星期四9、10节
实验台号
操作成绩
报告成绩
一、实验目的
1.以音频信号为例,熟悉模拟信号数字处理过程,进一步理解数字信号处理概念。
2.掌握运用Matlab实现对音频信号的时频分析方法;
3.初步掌握数字音频信号合成的方法。
4.掌握运用Matlab设计IIR和FIR滤波系统的方法;
5.掌握运用Matlab实现对加噪音频信号进行去噪滤波的方法。
锻炼学生运用所学知识独立分析问题解决问题的能力,培养学生创新能力。
二、实验仪器
计算机、Matlab软件
三、实验性质
综合分析、设计性实验
四、实验任务
实验内容一:
windows系统中的“ding”音频信号的采集、分析、合成
1.音频信号的采集
编写Matlab程序,采集windows系统中的“ding”声,得到*.wav音频文件,而后实现音频信号回放。
2.音频信号的频谱分析
运用Matlab软件实现对音频信号的时域分析和频域分析,并打印相应的图形,完成在实验报告中。
注意:
此音频信号的频谱包含两条主要谱线,在进行频谱分析时,注意频谱的完整性,利用MATLAB实现对两条主要谱线的定位并计算谱线所对应的模拟频率。
3.音频信号的分解和合成
运用Matlab软件实现音频信号的分解与合成,将音频信号的频谱中两部分频谱成分进行分解,分别绘制出分解后的两个信号的频谱图;然后将分解后的两个信号再合成为一个新的信号,将合成后的新信号的时域、频域图与原来的信号时域、频域图相比较,绘制出对比效果图。
4.音频信号的回放
运用Matlab软件实现音频信号的回放,将合成后的新信号和原音频信号分别进行回放,对比两个信号的声音效果。
5.音频信号分段傅里叶分析(选作)
分析对一般音频.wav信号进行一次性傅里叶分析时存在的主要问题,利用分段傅里叶变换对该音频信号重新分析并合成。
对比一次傅里叶分析结果并进行总结。
实验内容二:
任意音频信号的时域和频域分析及数字滤波器设计
1.音频信号的采集
音频信号的采集可以通过Windows自带的录音机也可以用专用的录制软件录制一段音频信号(尽量保证无噪音、干扰小),也可以直接复制一段音频信号(时间为1s),但必须保证音频信号保存为.wav的文件。
2.音频信号的时域、频域分析
运用Matlab软件实现对音频信号的打开操作以及时域分析和频域分析,并画出相应的图形,打印在实验报告中。
3.引入干扰信号
在原有的音频信号上,叠加一个频率为100KHz的正弦波干扰信号(幅度自定,可根据音频信号幅度情况而定)。
4.数字滤波器设计
运用Matlab实现IIR或FIR滤波系统,要求加入干扰的音频信号经过滤波系统后,能够滤除100KHz的干扰信号,同时保留原有的音频信号,要求绘制出滤波系统的频谱图,同时绘制出滤波前后音频信号的时域、频域对比图。
实验内容三:
编写FFT算法程序(此部分为选作内容)
分析FFT算法实现过程,运用Matlab软件实现FFT函数功能,要求运用自行编写的Matlab程序实现对固定信号(自定义信号)的频谱分析,并绘制出频谱图;然后将自己设计的FFT算法程序与FFT函数实现的频谱图相比较,分析两个程序结果的差别及原因。
五、实验任务分解及思路
实验内容一:
windows系统中的“ding”音频信号的采集、分析、合成
通过对任务内容要求的分析,建立程序框图如图一(任务一程序框图)所示,详细程序及结果见附录。
编程思想及思路如下:
1、首先用audioread读取音频信号得到signal序列及采样频率fs,由于音频信号是双声道,这里只取第一个声道进行处理,由于原信号本身就较短,这里对长度就不作处理。
接着按实验要求进行音频回放,并绘制出音频信号的时域波形。
2、调用fft函数,对signal进行快速傅里叶变换,并绘制出频谱图。
在绘制频谱图时考虑到快速傅里叶变换的对称性,这里只取序列的前半部分进行观察分析。
3、为了实现音频信号的分解及合成,先对原信号的频谱图进行观察分析,发现原信号的主要能量集中在两个频率上,于是考虑用这两个频率的正弦信号合成该信号。
这样首先要找到这两个频率。
为了求得这两个频率,我先调用findpeaks函数找到频谱图上的各个峰值点SIGNAL_pks及其对应的位置locs,然后用sort对峰值点进行排序,找到最大的两个值,接着用find函数找到这两个峰值点在locs中的位置,这样就从locs中知道了最大两个峰值点在原音频信号中的位置,也就知道了对应的频率。
接着生成这两个频率的正弦信号,幅度的比例等于频谱图上对应频率的幅值比例。
然后将两个正弦信号叠加,得到合成后的信号,绘制出时域波形,与原信号波形进行比较,接着对两个正弦信号进行fft,绘制出他们的频谱,然后对合成的信号进行fft,做出频谱图与原信号的频谱图进行比较。
4、用sound函数进行原信号和合成信号的回放,比较差异。
5、要对音频信号进行分段傅里叶分析,首先就要确定每段的长度。
考虑计算机进行傅里叶变换时点数为2^n时,为便于计算,这里就将每段长度暂定为1024,在for循环中对每段信号用fft函数进行快速傅里叶变换,然后再用ifft对每段快速傅里叶变换后的序列进行快速傅里叶逆变换并合成,然后进行音频回放,与原信号进行比较。
开始
读入signal,fs
音频信号回放
做音频信号时域波形
对signal做fft
做音频信号频谱
寻找频谱最高两个峰值点
找到峰值点对应的频率
生成对应频率的正弦信号
两个正弦信号相加
使合成信号最大幅值等于原信号最大幅值
做合成信号时域波形与原信号比较
做合成信号时域放大图
做两正弦信号的频谱
做合成信号的频谱与原信号频谱比较
原信号及合成信号的回放比较
原信号的分段傅里叶分析
结束
图一任务一程序框图
实验内容二:
任意音频信号的时域和频域分析及数字滤波器设计
通过对任务内容要求的分析,建立程序框图如图二(任务二程序框图)所示,详细程序及结果见附录。
编程思想及思路如下:
1、首先用audioread读取音频信号signal及采样频率fs,同实验内容一一样只取第一声道信号进行分析处理,由于此处选择的音频文件较长,这里截取前1s的数据进行处理。
2、同实验任务一一样,做出信号的时域波形,及fft变换后的频谱图。
开始
读入signal,fs
截取音频信号为1s
做音频信号时域波形
对signal做fft
做音频信号频谱
提高信号的采样频率
生成100KHz噪声
将信号与噪声叠加
对加噪后的信号做时域波形和频谱图
根据原信号频谱图确定低通滤波器设计指标
巴特沃斯低通滤波器设计
计算出滤波器系统函数分子分母系数
做滤波系统幅频特性曲线
对加噪后信号滤波
原信号及滤波后信号的时域及频谱比较
结束
图二任务二程序框图
3、这里要求引入100KHz的正弦干扰信号,由于由1中已得到fs为22050Hz,根据奈奎斯特频率采样定理,采样频率必须大于等于原信号最高频率的2倍,所以必须将原信号的采样频率提高到200KHz以上才能引入100KHz的噪声,所以这里考虑用一阶线型插值interp1将原信号的采样频率提高到220500Hz,这样就可以引入100KHz噪声。
做出提高采样频率后的信号的时域波形和频谱图,确认信号并没有发生变化。
接着生成100KHz的正弦信号,根据2中做出的信号的时域波形的幅度,这里取噪声的幅值为0.5。
将提高采样频率后的信号与噪声叠加。
对加噪后的信号做出时域波形和频谱图,观察波形的变化。
4、这里要求设计数字滤波器,根据对加噪前的频谱以及加噪后的频谱的观察,可以采用低通滤波器,这里用巴特沃斯低通滤波器即可满足要求,所以考虑设计相对较为简单的巴特沃斯低通滤波器进行滤波。
滤波前首先要确定设计指标,观察频谱这里暂取。
然后开始设计巴特沃斯低通滤波器,这里我把设计的程序打包成一个函数方便调用,函数的框图如图三(巴特沃斯低通滤波器,,
k=1,N
k=1,N
k=1,N
RSS=RS/FS
k=1,N
开始
N
Y
结束
Mod(N,2)=1
输出BZ,AZ
Y
k=length(B)+1,N+1
N
Length(B) 参量输入 图三巴特沃斯低通滤波器函数 函数)所示。 该函数调用需要5个输入参数分别为: : 模拟通带边界角频率,: 模拟阻带边界角频率,: 通带最大衰减,: 阻带最小衰减,FS: 信号采样频率。 参数输入后,根据数学上的推导开始计算。 首先根据书本公式6.2.18确定滤波器的阶数N,然后根据书本公式6.2.13求出归一化极点,接着求出3dB截止频率,然后对进行去归一化得到,然后得到的分子分母系数,接着对进行部分分式展开,由书本公式6.3.6,利用脉冲响应不变法将变换到,接着合并部分分式,求得的分子分母多项式的系数,对多项式的系数进行整理排列得到巴特沃斯低通滤波器系统函数的分子分母多项式的系数向量BZ,AZ,作为函数输出。 接着调用freqz函数求出设计的低通滤波器的频率响应特性函数,然后绘制出去频响特性曲线并观察,看是否符合设计指标。 若符合则开始滤波,不符合就要重新设计。 滤波时直接调用了filter函数,得到的信号做出时域波形和频谱图并与滤波前的信号对比,观察滤波效果,是否滤除了100KHz的干扰信号,并保留了原有的音频信号。 实验内容三: 编写FFT算法程序 此部分要求自己编写fft算法程序,首先要充分了解fft的运算过程。 观察图四(8点DIT-FFT运算流图)可以发现fft的运算过程很有规律性。 点的fft共进行M级运算,每级由N/2个 图四8点DIT-FFT运算流图 蝶形运算组成。 同一级中每个蝶形的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据结点又同在一条水平线上,这意味着计算完一个蝶形后,所得输出数据可立即存入原输入数据所占用的存储单元。 这样,经过M级运算后,原来存放输入序列数据的N个存储单元(数组A)中便一次存放X(k)的N个值。 这样可以节省大量内存,从而降低设备成本。 然后观察旋转因子的变化规律,每级都有N/2个蝶形。 每个蝶形都要乘以旋转因子,p为旋转因子的指数。 但各级的旋转因子和循环方式都有所不同。 为了编写计算程序,应先找出旋转因子与运算级数的关系。 用L表示从左到右的运算级数。 不难发现,第L级共有个不同的旋转因子。 对一般情况,第L级的旋转因子为,因为所以这样就确定了第L级开始 结束 读入x(n),M 倒序 输出 运算的旋转因子。 图五fft运算程序框图 接着研究蝶形运算规律,设序列x(n)经时域抽选(倒序)后,按图中次序存入数组A中,如果蝶形运算的两个输入数据相距B个点,应用原位计算,则蝶形运算可表示成如下形式: 式中其中下标L表示第L级运算,则表示第L级运算后的数组元素A(J)的值。 而表示第L级运算前A(J)的值。 另外由图四还有一些运算规律: 第L级中,每个蝶形的两个输入数据相距个点;每级有B个不同的旋转因子;同一旋转因子对应着间隔为点的个蝶形。 总结上述规律,采用以下算法。 先从输入端开始,逐级进行,共进行M级运算。 在进行第L级运算时,依次求出B个不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有个蝶形。 这样,利用三重循环实现fft算法,程序框图如图五(fft运算程序框图)所示。 另外,DIT-FFT运算流图的输出X(k)为自然顺序,但为了适应原位计算,其输入序列不是按x(n)的自然顺序排列,这种经过M次偶奇抽选后的排序称为序列x(n)的倒序。 因
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号处理实验报告 2 数字信号 处理 实验 报告