Insert all in matrix

1 visualizzazione (ultimi 30 giorni)
Simo
Simo il 28 Mar 2020
Modificato: Adam Danz il 28 Mar 2020
for all iteration the function ricerca sometimes gives 7 values, sometimes 2
how can i insert all the values in a matrix. It's all ok for the first 8 iterations where the functions ricerca gaves always 7 values. with the 8th iteration where from ricerca I get less values it gives me the error
"Unable to perform assignment because the indices on the left side are not compatible with the size of the right side."
i=1;
for S=0.05:0.05:1
LIV(i,:)=ricerca(V0,W,S,N)
i=i+1
end

Risposta accettata

Adam Danz
Adam Danz il 28 Mar 2020
Modificato: Adam Danz il 28 Mar 2020
You can either store the outputs in a cell array like this
i=1;
for S=0.05:0.05:1
LIV{i}=ricerca(V0,W,S,N)
% ^ ^
i=i+1
end
or you can pad the shorter vectors with NaN values so they match the correct size
i=1;
for S=0.05:0.05:1
results = ricerca(V0,W,S,N);
results = [results, nan(1,8-numel(results))]; %pad with NaN at the end
LIV(i,:) = results;
i=i+1
end
Don't forget to pre-allocate your LIV variable!
  4 Commenti
Simo
Simo il 28 Mar 2020
I've also thinked this way, but it says "Dimensions of arrays being concatenated are not consistent."
A=0.05:0.05:1;
for S=0.5:0.05:1
LIV=ricerca(V0,W,S,N);
A=[A;LIV];
end
Adam Danz
Adam Danz il 28 Mar 2020
Modificato: Adam Danz il 28 Mar 2020
'A' is 1x20 vector. You said the output of ricerca was either 8 or 2 elements long. Matrices need to have the same number of columns across all rows and the same number of rows across all columns.
You could store it in a cell array
i=1;
for S=0.05:0.05:1
LIV{1,i}=ricerca(V0,W,S,N)
LIV{2,i} = A; % <----
i=i+1
end

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by