for 1:x with unkonw x
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Riccardo Rossi
il 7 Gen 2019
Commentato: Riccardo Rossi
il 7 Gen 2019
Hi everybody,
i have an array like this:
ARRAY
X Y Z C
-3 4 5 1
5 6 2 2
4 4 9 1
6 6 7 2
4 6 2 3
9 9 7 3
where C goes from 1 to x (x unknow). I want to create a for to have x arrays with XYZ associated with C, like this:
for k=1:x
A(1:k)=[ARRAY(:,1),ARRAY(:,2),ARRAY(:,3),ARRAY(:,4)==1:k]
end
A1
X Y Z
-3 4 5
4 4 9
A2
X Y Z
5 6 2
6 6 7
A3
X Y Z
4 6 2
9 9 7
Thank you!
0 Commenti
Risposta accettata
madhan ravi
il 7 Gen 2019
Modificato: madhan ravi
il 7 Gen 2019
Don't think of naming variables dynamically (https://www.mathworks.com/matlabcentral/answers/304528-tutorial-why-variables-should-not-be-named-dynamically-eval ) use cell instead:
a=[-3 4 5 1
5 6 2 2
4 4 9 1
6 6 7 2
4 6 2 3
9 9 7 3];
u=unique(a(:,4));
A=cell(1,numel(u));
for i = 1:numel(u)
idx = (a(:,4) == u(i)); % edited after Jan's comment
% idx=ismember(a(:,4),u(i));
A{i}=a(idx,1:3);
end
celldisp(A)
Gives:
A{1} =
-3 4 5
4 4 9
A{2} =
5 6 2
6 6 7
A{3} =
4 6 2
9 9 7
5 Commenti
madhan ravi
il 7 Gen 2019
Modificato: madhan ravi
il 7 Gen 2019
Anytime :)
mean_of_X_Y_Z_in_each_cell=cellfun(@mean,A,'un',0)
Più risposte (1)
KSSV
il 7 Gen 2019
A = [-3 4 5 1
5 6 2 2
4 4 9 1
6 6 7 2
4 6 2 3
9 9 7 3 ] ;
C = A(:,end) ;
[c,ia,ib] = unique(C) ;
N = length(c) ;
iwant = cell(N,1) ;
for i = 1:N
iwant{i} = A(C==c(i),1:3) ;
end
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrices and Arrays in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!