2013-01-17 61 views
0

我正在嘗試從用戶指定的位置X到Y的.wav文件中讀取數據。代碼編譯文件,但由於某種原因,wavread函數沒有從指定的位置讀取數據。它在y向量中返回零。如果我不喜歡[y,fs]=wavread('Kalimba.wav', [StartingTime EndingTime]);,那麼代碼工作正常,並返回非零數據。從Matlab中的聲音文件中讀取數據

爲什麼會發生這種情況,我該如何解決這個問題?

下面是代碼:

function PlayFromXtoY(StartingTime,EndingTime) 

% converting the startingTime and EndingTime to minutes 

if StartingTime == 0 
    disp('Zero') 
    StartingTime=1; 

elseif StartingTime < 1 
     disp('Start <1') 
     StartingTime=StartingTime*10; 

    elseif StartingTime >= 1 
      disp('Start >=1'); 
      StartingTime=StartingTime*60; 
end 

if EndingTime < 1 
    disp('End <1'); 
    EndingTime=EndingTime*10; 

elseif EndingTime >= 1 
     disp('End >=1'); 
     EndingTime=EndingTime*60; 
end 

[y,fs]=wavread('Kalimba.wav', [StartingTime EndingTime]); % returning 0 in y for some reason 

wavplay(y,fs); 

問候

回答

0

你的第一個問題是,你執行你的啓動時間非常奇怪的修改和調用wavread前停止時間。這可能有助於disp在通話之前的那些時間,以及這些時間是否真的有意義。

然而,最重要的是,您將這些限制視爲時間,而對於wavread則不然。根據他的文件,你通過的限制應該是樣本數字。