怎样利用MATLAB读取一个WAV文件

怎样利用MATLAB读取一个WAV文件,第1张

读取波形:y

=

wavread(filename)

将信凯竖号幅度减半后,

存波形:wavwrite(y,filename)

把你的信号y,写为以filename命名的丛滚wav文件

建议你多渗孙余多使用matlab的HELP命令,会收获很多的哦

1)用mp3录音,生成文件cricket.wav,把该文件放到matlab文件夹里面(就是你打开matlab后中间顶部的地址)。

2)使用如下程序,做波形显示以及fft变换。

[y,Fs,bits]=wavread('cricket.wav')%读出信号,采样率和采样位数。

y=y(:,1)%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y)

Y = fft(y,sigLength)

Pyy = Y.* conj(Y) / sigLength

halflength=floor(sigLength/2)

f=Fs*(0:halflength)/sigLength

figureplot(f,Pyy(1:halflength+1))xlabel('Frequency(Hz)')

t=(0:sigLength-1)/Fs

figureplot(t,y)xlabel('Time(s)')

3)频率看频谱就有了,声音间隔看声音波形,周期看声音波形。

4)关于去噪声

a)如果噪声是特定频率的周期噪声(periodic noise),比如说50hz,那么你可以用matlab的filter,作一个低通、高通、带通或者带阻滤波。

b)如果声音是高斯白噪声。那就用自适应滤波(adaptive filter,wiener filter)。这里涉及到中烂对噪声的采样、计算特征值以及决定阶数的问题。

c)幸好我们可以“耍赖羡穗”——用cool editor。用它打开wav文件,用鼠标把一段噪声圈起来,采样,然后直接选择去噪就可以了。各大网站有介绍。

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当卖派漏今国际科学计算软件的先进水平。

最御做C也能像matlab一样读取wav格式文件!

用外置库libsndfile,可以读取数据,频率,通道等等

以镇陆衡下是一段读取sample.wav,将悉则数据存入double格式的array:

#include "sndfile.h"

#pragma comment(lib, "libsndfile-1.lib")

void readwav(double output[length]){

SNDFILE *sf

SF_INFO info

int num_channels

int num, num_items

double *buf

int f,sr,c

int i,j

info.format = 0


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8178337.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存