MATLAB Answers

0

how to predefine a matrix with one unknown dimension

Asked by Eliraz Nahum on 12 Oct 2018
Latest activity Answered by Eliraz Nahum on 13 Oct 2018
hey everybody I am interested in predefining a matrix with unknown dimension. I know that the matrix should have 15 rows (number of iterations), but the number of columns (time stages) depends on a stop condition in the code, and hence can't be known in advance. can I create a general definition like v=[]; but for a matrix with one known dimension? In addition, is it possible to create a zero matrix with 1 unknown dimension?
thanks!

  0 Comments

Sign in to comment.

Tags

Products


Release

R2018b

3 Answers

Answer by Matt J
on 12 Oct 2018
Edited by Matt J
on 12 Oct 2018
 Accepted Answer

No, all the dimensions of a matrix must be explicitly defined. What I often do in those cases is pre-define a cell array,
C=cell(1,N)
with a conservatively large N. Then, as the loop runs, accumulate the data in a sequence of cells,
for i=1:N
C{i}=next_column;
if stop_condition
break;
end
end
Later, you can just assemble the cells into a matrix with,
A=cell2mat(C);
and the empty cells will be ignored.

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 13 Oct 2018

Just define a matrix that's well large enough to hold all your numbers, like a few million elements or whatever.
v = zeros(15, 1000000);
Then do whatever you need to do assigning rows and columns in v, then, if you've kept track of the max column number, you can simply crop the array
v = v(:, maxColumn);

  0 Comments

Sign in to comment.


Answer by Eliraz Nahum on 13 Oct 2018

Thank you all. Both ways are good and I even learned some new elegant things.

  0 Comments

Sign in to comment.