find how many times duplicates occur in a matrix across row

2 views (last 30 days)
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
  5 Comments
sparsh garg
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
sparsh garg on 21 Sep 2021
Hey Jan if possible could you give me some tips on how to go about this also
https://in.mathworks.com/matlabcentral/answers/1457689-how-to-write-design-a-matrix-similar-to-the-one-outputted-by-contourf?s_tid=prof_contriblnk

Sign in to comment.

Answers (1)

Jan
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

Categories

Find more on Data Preprocessing in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!