Retrieving Arrays

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 件のコメント

Fangjun Jiang
Fangjun Jiang 2011 年 10 月 29 日
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 2011 年 11 月 3 日
It's my mistake. It doesn't really affect my result. Thanks.

サインインしてコメントする。

 採用された回答

Fangjun Jiang
Fangjun Jiang 2011 年 10 月 29 日

1 投票

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 件のコメント

RDG
RDG 2011 年 10 月 29 日
Thank you! This is it!
Andrei Bobrov
Andrei Bobrov 2011 年 10 月 29 日
[ign,i1] = sort(cellfun(@(x)x(numel(x)),A))
out=A(i1(1:2))
RDG
RDG 2011 年 10 月 29 日
Splendid!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeOperators and Elementary Operations についてさらに検索

タグ

質問済み:

RDG
2011 年 10 月 29 日

Community Treasure Hunt

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

Start Hunting!

Translated by