フィルターのクリア

How to find the number of occurrences of each pair in a matrix?

3 ビュー (過去 30 日間)
Md Shahidullah Kawsar
Md Shahidullah Kawsar 2018 年 10 月 30 日
回答済み: Bruno Luong 2018 年 10 月 31 日
Suppose my
A = [1 2 3;
2 3 1;
2 1 3]
% where any digit won't repeat in the same row.
% I need to find out the number of occurrences of each pair.
Expected output:
Pair(1,2) = 1 occurence;
Pair(2,1) = 1;
Pair(2,3) = 2;
Pair(3,2) = 0;
Pair(3,1) = 1;
Pair(1,3) = 1;
I was trying this code
for n = 2:3
[j,i]=ind2sub(fliplr(size(A)), strfind(reshape(A.',1,[]),[1 n]).');
C = [i,j];
d = numel(C(j));
T9 = table(1, n, d)
end
error occurs when the second row ends with 1 and the third row begins with 2.

採用された回答

Bruno Luong
Bruno Luong 2018 年 10 月 31 日
A = [1 2 3;
2 3 1;
2 1 3];
u = unique(A);
P = nchoosek(u,2);
P = [P;fliplr(P)];
[~,J] = ismember([A(:,1:2); A(:,2:3)],P,'rows');
n = accumarray(J(:),1,[size(P,1) 1]);
%
for k=1:size(P,1)
fprintf('Pair %s, %d time\n',mat2str(P(k,:)),n(k));
end
Output
Pair [1 2], 1 time
Pair [1 3], 1 time
Pair [2 3], 2 time
Pair [2 1], 1 time
Pair [3 1], 1 time
Pair [3 2], 0 time

その他の回答 (1 件)

David Goodmanson
David Goodmanson 2018 年 10 月 31 日
編集済み: David Goodmanson 2018 年 10 月 31 日
Hi MSK,
nrow = size(A,1);
B = A(:);
s1 = full(sparse(B(1:end-nrow),B(nrow+1:end),1))
puts instances if i,j into entry i,j. This should work with any number n of columns, assuming numbers 1 through n are used in each row.

カテゴリ

Help Center および File ExchangeOctave についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by