2012-08-05 60 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