2012-03-20 39 views
0

我試圖使用wavwrite導出圖(yi)中顯示的數據。當我進行插值時,(yi)信號不從零開始,我怎樣才能得到(yi)插值信號從零開始?請注意,由於wavwrite不能以這種方式工作,所以我不能只做一個情節(xxorig,yi)。有誰知道解決辦法?插值/創建信號/數組的新長度/時間刻度

我用八度3.2.4/MATLAB

clear all, clf 
xxorig=[0, 0.418879, 0.837758, 1.25664, 1.67552, 2.0944, 2.51327, 2.93215, 3.35103, 3.76991, 4.18879, 4.60767, 5.02655, 5.44543, 5.86431, 6.28319]; 
xx=[0, 0.296192, 0.592384, 0.888577, 1.18477, 1.48096, 1.77715, 2.07335, 2.36954, 2.66573, 2.96192, 3.25811, 3.55431, 3.8505, 4.14669, 4.44288]; 
yy=[0, 0.406737, 0.743145, 0.951057, 0.994522, 0.866025, 0.587785, 0.207912, -0.207912, -0.587785, -0.866025, -0.994522, -0.951057, -0.743145, -0.406737, -2.44929e-16]; 

yi=interp1(xx,yy,xxorig); 
subplot(4,1,1),plot(xxorig,yy),title("plot(xxorig,yy)") 
subplot(4,1,2),plot(xx,yy),title("plot(xx,yy)") 
subplot(4,1,3),plot(yy),title("plot(yy)") 
subplot(4,1,4),plot(yi),title("plot(yi)") 
wavwrite([yy'] ,16,32,'/tmp/test.wav') 

enter image description here

回答

0

目前還不清楚什麼是你想出口 - 信號的情節或聲音wav文件?

您使用WAVWRITE將聲音保存爲WAVE格式。在這種情況下,您將傳遞信號強度yi和可選的採樣率(默認率爲8000 Hz)。您souldn't小心,你的信號不爲0

開始,我相信你可以計算出你的yi採樣速率爲

Fs = numel(xxorig)/(xxorig(end)-xxorig(1)); 

如果你想PLOT信號指定X軸的時間。如果您未將x傳遞給plot函數,則它只使用從1開始的訂單號。這就是您的plot(yi)plot(yy)曲線不以0開始的原因。