2012-08-05 59 views
3

我有一个很大的波形文件,我想在它的末尾添加一些声音。并且因为我在循环中添加它,所以每次读取它并添加一个短部分并关闭它是不明智的(以这种方式,该算法非常慢)。 有没有更好的方法来在matlab(波形文件)中添加另一个声音文件?在matlab中添加波形文件末尾的声音

回答

1

如何在追加时将其保存在内存中?

big = wavread('big.wav'); 
flist = dir('*.wav'); 
for i=1:length(flist) 
    short = wavread(flist(i).name); 
    big = [big, short]; 
end 
wavwrite(big, 'bigger.wav'); 

如果你知道你要多少样品添加到big矢量它的速度更快,如果你预先分配所需的空间。

+0

我使用这个程序,但它也很慢我不想读BIG文件,它真的很大! – Hossein 2012-08-06 18:17:52

+0

'wavwrite'不支持添加,所以你只需要使用'fread' /'fwrite',但是在处理wav头文件时可能会变得复杂,所以也许在无头文件状态下处理数据。如何使用外部程序? ['sox'](http://sox.sf.net)可以很容易地做到这一点,连接两个文件:'sox long.wav short.wav -t wavpcm longer.wav'。 – Thor 2012-08-07 10:28:31