Hw0=[a31*ones(1,fix(k*31)),a62*ones(1,fix(k*31)),a125*ones(1,fix(k*63)),a250*ones(1,fix(k*125)),a500*ones(1,fix(k*250)),...
a1k*ones(1,fix(k*500)),a2k*ones(1,fix(k*1000)),a4k*ones(1,fix(k*2000)),a6k*ones(1,fix(k*2000))];
Hw1=a16k*ones(1,length(Pf)-2*size(Hw0,2)); Hw=[Hw0 Hw1 fliplr(Hw0)]; Yw=Pf(:,1).*Hw'; s=ifft(Yw);
handles.p = audioplayer(s, fs);
上面代码前一部分是进行均衡器参数设置(均衡器的参数设置范围为-12dB至+12dB),接着计算出对应频率点的增益,由频段的增益值构造出均衡器的频率特性。然后通过频域滤波和傅里叶反变换计算出滤波后的声音信号,并由该声音信号构造一个声音播放对象。
4 波形显示
(1) 理想低通滤波结果
(2) 理想高通滤波结果
(3) 理想带通滤波结果
(4) 理想带阻滤波结果
5 存在的问题
本次基于MATLAB的数字滤波器和均衡器设计比之前的基于MATLAB的信号发生器和频谱分析仪设计要难很多。但是前两次的信设计技巧和方法是本次数字滤波器和均衡器设计的基础。在本次数字滤波器和均衡器的设计过程中遇到了很多问题,经过查阅资料,有些问题得到了完美的解决,也有些问题解决的不是很好。下面将设计过程中遇到的问题总结如下:
(1) 对进行滤波器设计时,发现在构造理想滤波器频率特性响
应时,要注意使滤波器频域特性向量与信号的频域特性向量长度保持一致,且滤波器的频域特性向量应设计成对称形式,不然无法进行信号的频域滤波和傅里叶反变换。 (2) 设计音频播放程序时,发现MATLAB的文件读取功能有限,
打开30多兆的wav音频文件时,会提示数据内存不够用。另外,在进行大数据量的矩阵计算时,速度比较慢。 (3) 个人感觉MATLAB的多线程能力比较差,本人有考虑使用
timer定时器来实现一些功能,比如实现音量的实时改变,均衡器效果的实时改变,播放进度控制等,但都没有成功。另外,发现这方面的资料很难找,所以只能放弃。 (4) 在MATLAB中进行音频文件保存的问题。MATLAB中用于
打开保存文件对话框的函数是uiputfile。但该函数只是返回一个保存的文件名,实际上并没有真正创建该文件。使
用时,应在后面用wavwrite函数将要保存的数据写入到该文件名中。
6 结束语
本文通过对数字理想滤波器的频域特性构造,将信号发生器产生的标准信号进行频域滤波,生成滤波后的信号频谱图,再对该频域信号进行傅里叶反变换得到滤波后的时域信号。最后,对滤波前后的时域和频域信号图的对比可以直观的感受到滤波器的频域滤波功能。
利用滤波器的频域滤波原理设计的数字音乐均衡器,通过将人耳能听到的声音频率范围20Hz至20kHz进行分段,分别控制每一频段的信号的增益值,并进行整个频域特性响应的构造,即可得到该频率范围的滤波器。使用该构造的滤波器对输入的原始声音信号进行频域滤波,并通过傅里叶反变换将滤波后的频域信号转化成的时域波形信号。然后,再播放该滤波后的声音信号,即可发现声音的音质效果发生了改变。本程序实现了.wav格式文件的读取和播放控制,包括暂停、继续播放、停止播放、快播和慢播功能。并提供了多种推荐均衡器参数配置,能实现多种声音效果的变化。最后还可以使用保存功能将通过均衡器处理后的声音文件另存为一个wav音频文件。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于MATLAB的数字滤波器和均衡器设计(3)在线全文阅读。
相关推荐: