How to remove a dimension from multiple arrays and store it in different cell arrays or consecutive distinct arrays
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hernaldo Leyton
le 6 Oct 2017
Réponse apportée : Hernaldo Leyton
le 10 Oct 2017
I'm trying to get 16 different times of a variable inserted into an array and then stored in different arrays. What I can do is 16 different cell arrays, but in each cell array the last loop time is repeated, ie the same time of the variable is repeated in the 16 cell arrays. The code I have is the following:
for m=1:24:361;
for p=1:n;
Mod.Var3D.P.AllNivel.Dia{p}= squeeze(Mod.Var3D.RAIZ.P(:,:,:,m));
end
end
Someone who can help me please what is the error that I am committing that I am not able to store the 16 different times of the variable in each matrix.
Regards
0 commentaires
Réponse acceptée
per isakson
le 6 Oct 2017
Modifié(e) : per isakson
le 6 Oct 2017
The major problem with your code is that Mod.Var3D.P.AllNivel.Dia{p} is overwritten for every new value of the outer loop counter, m
Here is a MWE, minimal working example, of what I believe you are looking for.
>> Dia = cssm
Dia =
[6x1 double] [6x1 double] [6x1 double]
[6x1 double] [6x1 double] [6x1 double]
[6x1 double] [6x1 double] [6x1 double]
[6x1 double] [6x1 double] [6x1 double]
[6x1 double] [6x1 double] [6x1 double]
[6x1 double] [6x1 double] [6x1 double]
where
function Dia = cssm
% Dia is short for Mod.Var3D.P.AllNivel.Dia
% P is short for Mod.Var3D.RAIZ.P
P = magic(6);
Dia = cell(0);
n = 6;
for m=1:2:6
tmp = cell( n, 1 );
for p=1:n;
tmp{p}= squeeze(P(:,m));
end
Dia = cat( 2, Dia, tmp );
end
end
0 commentaires
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!