While loop for testing the end of vector (Matlab)

Dear members,
If we have a long vector that we don't know its length, and we want use while loop to repeat the task than stop and exit from the loop when the vector length is at its end.
For example, if the vector length is 10000 bits so we repeat the calculation (of any task) until 10000 than we stop and exit.
But in my case, I don't know the length of my vector. So how can I program this please?
Thank you.

 채택된 답변

Rik
Rik 2021년 2월 17일

1 개 추천

You can use numel to create a loop over a vector of unknown size:
A=rand(1,100);
for n=1:numel(A) % n will go to 100
%your code here
end

댓글 수: 5

But what if I don't know the length of my vector if it is 100 or 100000
Rik
Rik 2021년 2월 17일
numel will deal with that. That first line is just to create some example data. This loop will run 100 times if there are 100 elements in A, and 10k times if there are 10k elements in A.
Thank you so much
Rik
Rik 2021년 2월 17일
You're welcome. If either answer solved your issue, please consider marking it as accepted answer. If you feel both answers solved your issue, pick the best one and give the other an upvote.
If your issue is not yet resolved, feel free to comment with your remaining issues.
It's done

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

추가 답변 (1개)

Daniel Pollard
Daniel Pollard 2021년 2월 17일
편집: Daniel Pollard 2021년 2월 17일

1 개 추천

If you know that it's 1-dimensional, you can use
numel(vector)
which returns the length of your vector. Also useful to know is
size
which returns the size of a matrix (eg, [2 2] for a 2x2 matrix, [10 1] for a 10x1 vector, etc).
Edit I've replaced length with numel - thank you Rik.

댓글 수: 3

Rik
Rik 2021년 2월 17일
편집: Rik 2021년 2월 17일
I would strongly argue against teaching length. It is either equivalent to numel, or it will introduce a subtle bug that may be hard to catch if the direction of the vector is different from what you expect. I haven't seen a case where it couldn't be replaced by numel or size. Starting in R2020b you can also use the width function, see also this blog (and the comments).
This is news to me - I've used length multiple times without any issues. What exactly is the bug?
Rik
Rik 2021년 2월 17일
The bug is not with length, the bug is with the use of length. For a vector it is equivalent to numel, and for array inputs it is probably not what you mean. How often did you want to loop over max(size(A)) without knowing which dimension is that maximum?

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

카테고리

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

태그

질문:

2021년 2월 17일

댓글:

2021년 2월 17일

Community Treasure Hunt

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

Start Hunting!

Translated by