0

これは私のデータです:

3  3  2
2  4  1
4  1  2
7  5  2
3  4  1
2  6  2
1  5  1

1の重複が3つ、2の重複が4つあることをどうにかして返したい.

find(ismember(e(:,3),set)私はどこでset = [1, 2]試しましlength(strfind(e(:,3),'1'))たが、うまくいきませんでした...他に何も見つかりませんでした

そのまま返してくれればいいのに

ans = 
      3 1
      4 2
4

3 に答える 3

5

この場合の最善の方法は、 を使用することtabulateです。

m = tabulate(a(:,3))

m =

1.0000    3.0000   42.8571
2.0000    4.0000   57.1429

[m(:,1), m(:,2)]

ans =

 1     3
 2     4 
于 2013-04-11T14:50:20.597 に答える
3
data = [3  3  2
        2  4  1
        4  1  2
        7  5  2
        3  4  1
        2  6  2
        1  5  1];

d = data(:,3); %extract relevant data
u = unique(d)'; %find unique list of numbers
D = repmat(d, 1, length(u)); 
s = sum(bsxfun(@eq, u, D)); %count occurences of each number in the unique list
ans = [s', u']

編集:

ここで見つけたより良い答え:ベクトル内の各一意の要素の出現回数を決定する

于 2013-04-11T14:05:55.983 に答える