のベクトルで2つの番号の組み合わせのユニーク#をカウントする最速の方法2要素との組み合わせ。MATLAB次のような整数のベクトルを考えると整数
この場合、2つの番号の組み合わせは以下のとおりです。
[1 2] (occurs twice)
[2 3] (occurs once)
[3 4] (occurs once)
[4 5] (occurs once)
[5 1] (occurs once)
現状では
X = [1 2 3 4 5 1 2];
N = length(X)
X_max = max(X);
COUNTS = nan(X_max); %store as a X_max x X_max matrix
for i = 1:X_max
first_number_indices = find(X==1)
second_number_indices = first_number_indices + 1;
second_number_indices(second_number_indices>N) = [] %just in case last entry = 1
second_number_vals = X(second_number_indices);
for j = 1:X_max
COUNTS(i,j) = sum(second_number_vals==j)
end
end
やっての高速化/スマートに方法はありますが、以下のように、私は現在、MATLABでこれをやっていますこの?
誰かが興味を持っている場合、私が念頭に置いておいてほしいアプリケーションは次のとおりです:X基本的にはマルコフ連鎖のサンプルパスであり、COUNTSは正規化後にCOUNTS(i、j)= P(次の状態= j |現在の状態= i)。 –
良い質問ですが、私はそれが少し誤解を招く方法を見つけました。ユニークな組み合わせの数、つまりそこに存在する組み合わせの数はわかりませんが、各組み合わせの数は分かりません。それ以外の場合、 'unique(A、 'rows')'はあなたの友人でした。 –