2

<465x1>のセル配列があります。各要素をチェックするために、それが一意であるか繰り返し要素であるかをチェックしたいと思います。

4

1 に答える 1

5

この目的で使用するuniqueと、セル配列でも機能します。

[U, ic, iu] = unique(C);

Cセル配列はどこにありますか。Uと同じ値を持ち、C繰り返しがない新しい cell 配列です。次に、次を使用して各値の出現回数をカウントできますhistc

[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic)) 

例のために、最初に文字列のランダムなセル配列を生成しましょう。

strings = {'foo'; 'bar'; 'baz'; 'bang'};
C = strings(ceil(numel(strings) * rand(6, 1)))

これにより、次のようなものが生成されます。

C = 
    'bang'
    'baz'
    'foo'
    'bang'
    'bar'
    'foo'

次に、 の各値の出現回数を数えますC

C = strings(ceil(numel(strings) * rand(6, 1)));
[U, ic, iu] = unique(C);
count = histc(iu, 1:numel(ic))

これにより、次のようになります。

U =
   'foo'
   'bar'
   'baz'
   'bang'

count =
    2
    1
    1
    2

つまり、'foo''bang'は 2 回繰り返され、残りは 1 回だけ繰り返されます。これは正しいことです。
真にユニークな値のみに関心がある場合は、次のことができます。

U(count == 1)

この例では、次のものが返されます。

'bar'
'baz'

の各要素はcountの対応する値を表すことに注意してくださいU( ではなくstrings、順序が異なる場合があります)。

于 2012-12-27T09:01:41.957 に答える