3

私は行列を持っているとします

A = [1 2 3 1 1 1 2 3]

数値がマトリックスに出現した回数を見つけたい。この i/p の出力行列は次のようになります。

B = [1 1 1 2 3 4 2 2]

つまり、配列に 1 が 4 回出現したため、1 に対応する最後の値は 4 です。

unique要素が発生した合計回数が得られるため、sum unique役に立ちませんが、発生するたびにカウントを増やす別のマトリックスが必要です。

4

4 に答える 4

1

これは、次のコードを使用して非常に簡単に行うことができます。これは、行列 A が 1 次元であると仮定しますが、これは大げさな仮定ではありません。

A=[1 2 3 1 1 1 2 3];
vals = unique(A);
B = zeros(size(A));
for i = 1:numel(vals)
   idxs = find(diff([0,cumsum(A == vals(i))]));
   B(idxs) = 1:numel(idxs);
end

このソリューションは、R ではなく MATLAB 用です。どちらが必要かわかりません。Rの回答が必要な場合は、他の人の回答のいずれかをお勧めします:)

于 2013-09-04T13:47:14.353 に答える
0

マトラブの場合:

B = sum(tril(repmat(A,length(A),1)).' + tril(repmat(NaN,length(A),length(A)),-1) == repmat(A,length(A),1))

がゼロを含まないことが保証されている場合A、これは次のように簡略化できます。

B = sum(tril(repmat(A,length(A),1)).' == repmat(A,length(A),1));
于 2013-09-04T14:19:49.150 に答える