Index exceeds matrix dimensions at buffer function

1 回表示 (過去 30 日間)
I Made
I Made 2013 年 2 月 27 日
Here is what i'm gona trying to do :
  1. I read a .wav file called tes.wav stored in y
  2. I try performing 3-level Haar Wavelet Transform on it
  3. I try to framing the D3 (detail subband level 3)
So i have this following code :
f=wavread('tes.wav','native');
v=[1/sqrt(2) 1/sqrt(2)];
w=[1/sqrt(2) -1/sqrt(2)];
if mod(length(f),2)~=0
f=[f 0];
end
d=length(f);
m=1:d/2;
a1=f(2*m-1).*v(1) + f(2*m).*v(2);
d1=f(2*m-1).*w(1) + f(2*m).*w(2);
d=length(a1);
m=1:d/2;
a2=a1(2*m-1).*v(1) + a1(2*m).*v(2);
d2=d1(2*m-1).*w(1) + a1(2*m).*w(2);
d=length(a2);
m=1:d/2;
a3=a2(2*m-1).*v(1) + a2(2*m).*v(2);
d3=d2(2*m-1).*w(1) + a2(2*m).*w(2);
x=d3(1:length(d3),1);
frame=buffer(x,10);
But i Keep getting error message like this :
??? Index exceeds matrix dimensions.
Error in ==> Project at 32 x=d3(1:length(d3),1);

採用された回答

per isakson
per isakson 2013 年 2 月 28 日
編集済み: per isakson 2013 年 2 月 28 日
Add the line
size( d3 )
before the line that errors. What does it show? (I guess d3 doesn't have the size you expect.)
Why do you use
x = d3( 1:length(d3), 1 );
and not
x = d3( :, 1 );
?
The error message indicates that the rows of d3 has more elements than the columns.
  3 件のコメント
per isakson
per isakson 2013 年 2 月 28 日
No, I'm not. However, searching the File Exchange for "haar transform" returned 18 contributions. Many of them with high ratings.
You could open a new question in Answers.
I Made
I Made 2013 年 2 月 28 日
Yeah, anyway i got the code above there too. But when i add somemore code to framing it just dont working because the size change after the transform. Anyway thanks for your reply

サインインしてコメントする。

その他の回答 (1 件)

Shashank Prasanna
Shashank Prasanna 2013 年 2 月 27 日
編集済み: Shashank Prasanna 2013 年 2 月 27 日
>> clear
and start fresh, There could be a conflict in the name of the variable vs name of the function
  2 件のコメント
Sean de Wolski
Sean de Wolski 2013 年 2 月 27 日
Yeah; looks like length() was shadowed.
which -all length
I Made
I Made 2013 年 2 月 28 日
Thanks for your reply, by the way where should i put the "clear all" or "clear" code? i've tried use it before
x=d3(1:length(d3),1);
frame=buffer(x,10);
But i got another error :
??? Reference to a cleared variable d3.
Error in ==> haarTransform at 34

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeDiscrete Multiresolution Analysis についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by