簡體   English   中英

Matlab錯誤:索引超出矩陣尺寸

[英]Matlab error: Index exceeds matrix dimensions

我正在嘗試對音頻文件執行STFT。 我需要獲取每個窗口的fft。

我使用了下面的代碼。

[wave,fs] = wavread('40.wav'); 
w_length = 1024;
for v = 1:w_length:length(wave)
    data_sub = wave(v:v+w_length);
    subsection_fft = fft(data_sub);
    figure(1)
    plot(subsection_fft)
end

但是我得到以下錯誤。

??? Index exceeds matrix dimensions.
Error in ==> chk at 7
    data_sub = wave(v:v+w_length);

你能告訴我我可以做些什么來糾正這個問題。

如錯誤消息所述,您正在嘗試訪問wave tat中的位置不存在。

請參閱以下示例:

a    = rand(7,1);
step = 4;

1:step:7
ans =
     1     5

v = 5 ,你將嘗試訪問位置v:v+step ,即5至9中,但a只被定義多達7層的元件。

在您的情況下, wave被定義為length(wave) ,但是在最后一次迭代中,您將超出范圍

為了避免這種情況,方法是對末端序列進行采樣並減去序列的長度:

pos = (1+w_length:w_length:length(wave))-w_length
for v = pos
% do stuff
end

但是,您將剩下一些未處理的部分,您將不得不在循環之外做最后的迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM