Hello to everyone,
Say we have two for loops in the following form:
for i = [1, 2..., N_i]
for j = [1, 2..., N_j]
[Some code that does stuff];
output = some_vector; % This vector is of size m*1
Array{i}(:, j) = output;
end
end
So at the end, we will arrive with:
  1. A cell array named Array with N_i elements.
  2. Each element of the Array will display a matrix of m rows and N_j columns.
Now, this works fine if and only if the output has always the same size, i.e., m*1. We can't save matrices of different row lengths. So my question is the following: is there any way to store the outputs when they are of different size (e.g., the first loop gives an output of 10*1, and the second one of 15*1, and so on...)?
Thanks in advance to everyone.

 Réponse acceptée

Dyuman Joshi
Dyuman Joshi le 6 Avr 2023
Modifié(e) : Dyuman Joshi le 6 Avr 2023
"is there any way to store the outputs when they are of different size (e.g., the first loop gives an output of 10*1, and the second one of 15*1, and so on...)?"
Yes, Cell arrays -
m=5;
%pre-allocation
y=cell(m,1);
for p=1:m
%Storing array of size dependent on the loop index
y{p,1}=p*ones(p*m,1);
end
y
y = 5×1 cell array
{ 5×1 double} {10×1 double} {15×1 double} {20×1 double} {25×1 double}
y{3}
ans = 15×1
3 3 3 3 3 3 3 3 3 3

1 commentaire

Lol, this is embarassing, didn't know about the possibility of using {i, j} in arrays. Thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by