MATLAB: Count number of column pairs occurrence in 3d array

3darraycolumn pairscountoccurrencepairs

I have a 3d array like the example below:
A(:,:,1) = [5.5 2.2; 5.3 2.5; 5.3 2.1; 5.4 2.6]
A(:,:,2) = [5.2 2.9; 5.4 2.6; 5.4 2.6; 5.5 2.2]
I want to calculate the number of occurrences of all column pairs. So for example [5.4 2.6] should equal 3 and [5.5 2.2] should equal 2 while the rest of all pairs will equal 1.
I want the numbers to be stored in a new array at the same location as its representative pair, like this:
B(:,:,1) = [2 1 1 3]
B(:,:,2) = [1 3 3 2]
How can I do this as efficiently as possible? I should add that the real array is much larger so I really need an automated solution.

Best Answer

A(:,:,1) = [5.5 2.2; 5.3 2.5; 5.3 2.1; 5.4 2.6];
A(:,:,2) = [5.2 2.9; 5.4 2.6; 5.4 2.6; 5.5 2.2];
[s1, s2, s3] = size(A);
B = reshape(permute(A, [1,3,2]), s1*s3, []);
[C, ~, iB] = unique(B, 'rows', 'stable'); % Find unique pairs
[N, ~, bin] = histcounts(iB,'BinMethod','integers'); % Count the pairs
R = reshape(N(bin), s1, []) % Create output matrix