# find how many times duplicates occur in a matrix across row

4 views (last 30 days)
sparsh garg on 21 Sep 2021
Answered: Jan on 21 Sep 2021
Given a matrix of 2xn dimension,in the row dimension there are several numbers with duplicates.Usnig histcnt these value shave their count atmost 2.
Now I would like to ensure that I only consider those elements in the row if their count is 1,for any number i will skip them.
I tried doing unique(A(1,:)) on my matrix but it didn't give me the correct result
My current code for duplicate findinng results in index exceed error
function ids=find_indices(A,B)
ids=[];
for i=1:size(A,2)
for j=1:size(B,2)
if(A(1,i-1)==A(1,i))
ctr=ctr+1;
end
%ctr=sum(A(1,:)==A(1,i));
if (B(1,j)==A(1,i) && ctr==1)
ids=[ids,i];
else
continue
end
end
end
end
sparsh garg on 21 Sep 2021
oh sorry about that,what I wanted to say was that each value in the A matrix has a count of atmost 2 which is supported by the code snippet that you posted.
Now ,based on this I only want to select the values in A which are occuring only once. However after doing unique I am only interested in knowing the indice corresponding to these values
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
Columns 23 through 44
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128.
For better visualization of what B matrix looks like ,enclosed is a plot.
Note that the figure was obtained after applying curve fitting.
sparsh garg on 21 Sep 2021
Hey Jan if possible could you give me some tips on how to go about this also

Jan on 21 Sep 2021
As fas as I understand, you want to obtain the indices of the elements of A, which occur once only. Then:
index = ~isMultiple(A(1, :));
result = A(1, index); % Or maybe sorted:
sort(A(1, index)
function T = isMultiple(A)
[S, idx] = sort(A(:).');
m = [false, diff(S) == 0];
ini = strfind(m, [false, true]);
m(ini) = true; % Mark 1st occurence in addition
T(idx) = m;
end