how to predefine a matrix with one unknown dimension

144 views (last 30 days)
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!
  1 Comment
Eliraz Nahum
Eliraz Nahum on 13 Oct 2018
Moved: Dyuman Joshi on 18 Oct 2023
Thank you all. Both ways are good and I even learned some new elegant things.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 12 Oct 2018
Edited: Matt J on 12 Oct 2018
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.

More Answers (1)

Image Analyst
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);

Tags

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!