Retrieving Arrays

2 Ansichten (letzte 30 Tage)
RDG
RDG am 29 Okt. 2011
Suppose I have 4 cell arrays with 4 matrices in each cell array;
A{1}=[1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 4 8 12 16]
A{2}=[2 3 4 5; 2 3 4 5; 2 3 4 5; 2 3 4 5; 8 12 16 25]
A{3}=[3 4 5 6; 3 4 5 6; 3 4 5 6; 3 4 5 6; 12 16 25 24]
A{4}=[4 5 6 7; 4 5 6 7; 4 5 6 7; 4 5 6 7; 16 20 24 28]
I would like to retrieve 2 (of the best) cells according to the content of the matrices in [5,4] (notice that they're the summation of the elements above them). Let's just say I want to retrieve the matrices whose value of the [5,4] is closer to 0, it means that I will have A{1} and A{2} as my result.
May I know how to get about this?
  2 Kommentare
Fangjun Jiang
Fangjun Jiang am 29 Okt. 2011
Is the matrix in each cell always the same size? The last element of A{2} should be 20. It shouldn't matter but your expect result will be different.
RDG
RDG am 3 Nov. 2011
It's my mistake. It doesn't really affect my result. Thanks.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Fangjun Jiang
Fangjun Jiang am 29 Okt. 2011
A{1}=[1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4; 4 8 12 16];
A{2}=[2 3 4 5; 2 3 4 5; 2 3 4 5; 2 3 4 5; 8 12 16 25];
A{3}=[3 4 5 6; 3 4 5 6; 3 4 5 6; 3 4 5 6; 12 16 25 24];
A{4}=[4 5 6 7; 4 5 6 7; 4 5 6 7; 4 5 6 7; 16 20 24 28];
B=cell2mat(A);
[m,n]=size(A{1});
b=B(m,n*(1:n));
[b,ind]=sort(abs(b));
ind=ind(1:2);
SelectA=A(ind);
celldisp(SelectA);
  3 Kommentare
Andrei Bobrov
Andrei Bobrov am 29 Okt. 2011
[ign,i1] = sort(cellfun(@(x)x(numel(x)),A))
out=A(i1(1:2))
RDG
RDG am 29 Okt. 2011
Splendid!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by