2010-11-23 9 views
3

私の問題は、そのベクトル内の各セルの最初の要素だけを考慮した細胞の配列をソートする方法である:各セルの最初の要素によって、細胞の配列をソート

array_A={[3 1 5] [1 6 2] [2 4 1]} 

私はARRAY_Aをソートします、このような各セルの最初の要素によって:

array_A={[*1* 6 2] [*2* 4 1] [*3* 1 5]} 

あなたはそれが細胞の数千人のために再帰的に行うことができるような方法で、どのように私はこの問題を解決することができます上の任意のアイデアを持っていますか?

答えて

4

最も簡単なのは、array_Aを列挙して数値配列を作成し、その配列に基づいて並べ替えることです。ベクトルの長さや長さが異なる場合、最初にセル配列の各要素の最初の要素を抽出し、並べ替えることができます。言い換えれば

%# extract the first number from each element of array_A 
firstElement = cellfun(@(x)x(1),array_A); 
%# sort (the ~ discards the first output argument of sort) 
[~,sortIdx] = sort(firstElement); 
%# sort array_A using the proper sort order 
array_A_sorted = array_A(sortIdx); 
+0

1ダーン!ちょうど私にそれを打つ。 – gnovice

+0

素晴らしい解決策+1!ポスターはセル*の配列を求めていましたが、これはcellfun()内にcell2mat()が追加されている可能性があります。 – zellus

関連する問題