??? Improper assignment with rectangular empty matrix.

I'm doing my report. Matlab is used to solve the question. My code like this:
function y=STFT(x,seg,step);
[Lx chan]=size(x);
maxi=(Lx-seg)/step;
for i=1:maxi;
X=x(1+(i-1)*step:seg+(i-1));
Z= X*step;
f=fft(Z);
P=f.*conj(f);
y(:,i)=P;
end
However, it show error exist at "y(:,i)=P; ". May i know how to solve it?
Besides that, is that other formula can i replace "X=x(1+(i-1)*step:seg+(i-1));"?
Hope can get the answer by today as my code have to submit tomorrow.
Thank you.

Answers (1)

I suspect your problem is that this line:
X=x(1+(i-1)*step:seg+(i-1));
should read
X=x(1+(i-1):step:seg+(i-1));

4 Comments

but matlab there show error at y(:,i)=P. Why is it??
If the size of X is computed incorrectly, that could cause an assignment error when you try to assign P to a column of y.
i see. For the line
"X=x(1+(i-1)*step:seg+(i-1));
Z= X*step;"
is that got other way to write this formula?? Because what i posted is sample answer from lecturer, we need to change it. Any idea?
It depends what the code is intended to do. It's hard to fix code without having a specification for the computation - more details of what you are aiming at would help.
By the way, I see that in your comment you show your original line of code, not my correction. Is that because the correction does not work?

Sign in to comment.

Asked:

Goh
on 3 Dec 2011

Community Treasure Hunt

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

Start Hunting!