How do I initialize an array of unknown dimension?

조회 수: 162 (최근 30일)
Pappu Murthy
Pappu Murthy 2018년 3월 12일
편집: Stephen23 2018년 3월 12일
I have a vector whose length is not known apriori. The programs gives a warning with red wiggles underneath indicating that the size of the array varies each loop and preallocating the size is a good idea. But how do I do that since I do not know what is the size going to be.
  댓글 수: 1
Geoff Hayes
Geoff Hayes 2018년 3월 12일
Pappu - do you have an idea of the size of the array? You could pre-allocate to some large size and then reduce the size of the array at the end if there are any "unused" elements.

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

채택된 답변

Stephen23
Stephen23 2018년 3월 12일
편집: Stephen23 2018년 3월 12일
"But how do I do that since I do not know what is the size going to be."
You have several main choices:
  • preallocate an array equal to the largest possible size, and then trim it down afterwards.
  • expand the array in blocks/chunks of reasonable size, rather than expanding it one row/column at a time.
  • right click and to tell MATLAB to not show that warning.
  • store the arrays in a preallocated cell array: this is useful if a fixed number of iterations produces an unknown quantity of data.
  • Download and use John D'Errico's excellent FEX submission growdata.
Which one to pick depends on the size of the array, how many times the array size is changed, and what size the changes are each time. The best choice is to implement all three and do a timing comparison. You might like to read this blog:

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by