在matlab和java中读取.wav信号

时间:2014-07-18 09:05:56

标签: java android matlab

当我在matlab中加载.wav信号时,样本的值如下:0.001853466033936,0.003706693649292等。

当我用Java加载相同的信号时:

byte[] buffer = new byte[blockSize];
FileInputStream s = new FileInputStream(file);
s.read(buffer, 0, blockSize);

我有这样的价值观:73,70 ......

我尝试转换为double,但我从来没有像在matlab中那样得到相同的结果。

Android需要这个!

有人能帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您的java代码从头开始读取文件。查看WAVE file format,数据存储在标题之后。

您需要编写一个wav文件阅读器(或找一个兼容Android的文件)来解析标题,阅读NumChannelsBitsPerSample等,找到数据的开头并阅读。

这就是MATLAB的wavread所做的(可能这就是你正在使用的?)。您可以看到它如何解析wav文件,键入edit wavread

看看这个简单的Java WAV File IO课程。它可能会做你需要的一切,或者至少让你开始。