Why does this loop create a horizontal array instead of a vertical array?

I know this may seem a really simple question but I just can't seem to work this one out when consulting the manual.
Within my code I have the following loop to work out the difference between sensor readings:
for i = 1 : size(xVal)
df([i]) = yVal(i+1) - yVal(i);
End
xVal is a line number and yVal is a sensor reading.
But for some reason, rather than creating a vertical array of difference values, a horizontal array is created and before it is complete MATLAB throws up an error stating "Index exceeds matrix dimensions" (I assume this error is because the horizontal array goes beyond a value MATLAB can handle.)
How can I change this loop so that a vertical array is created? (I also assume that this would overcome the "Index exceeds matrix dimensions" error?)
Any help is greatly appreciated.

 채택된 답변

Alexandra
Alexandra 2012년 10월 23일

0 개 추천

Why don't you try it with the function diff? It's easier and very quickly...

댓글 수: 2

Also you have to put the right dimension when you use size function, especially on a for
for i = 1 : size(xVal,1) % -> Rows
This is exactly what I have been looking for. I couldn't find this function in the manual!!!
Thank you.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Probably you have preallocated array df as maybe zeros(x,1). It should be:
df = zeros(1,x);
x is number of elements in array df
Hope it helps!!!

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

제품

질문:

2012년 10월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by