for 1:x with unkonw x

2 Ansichten (letzte 30 Tage)
Riccardo Rossi
Riccardo Rossi am 7 Jan. 2019
Kommentiert: Riccardo Rossi am 7 Jan. 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!

Akzeptierte Antwort

madhan ravi
madhan ravi am 7 Jan. 2019
Bearbeitet: madhan ravi am 7 Jan. 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];
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 Kommentare
madhan ravi
madhan ravi am 7 Jan. 2019
Bearbeitet: madhan ravi am 7 Jan. 2019
Anytime :)
mean_of_X_Y_Z_in_each_cell=cellfun(@mean,A,'un',0)
Riccardo Rossi
Riccardo Rossi am 7 Jan. 2019
So grateful!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

KSSV
KSSV am 7 Jan. 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

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by