필터 지우기
필터 지우기

how to replace elements of a matrix in a sequence by comparing with another?

조회 수: 2 (최근 30일)
i have two matrix as
y=[12 14 13 18 17 19 16 20 13 19 18];
z=[1 2 3 4 5 6 8 9 10 12 14];
Now whenever there is a repetition in y, I want that value replaced by the values of z.
In the 9th position is '13' which is a repetition of 3rd position so that will get replaced by z's first value, which is '1', Then in 10th position is again a repetition so this '19' will get replaced by '2'. Same will happen whenever there is a repetition.
Please please help me out...

채택된 답변

Image Analyst
Image Analyst 2014년 6월 30일
It's not fancy, but did you try taking the histogram (to find integers with counts of 2 or greater) and then just the normal, brute force for loop to replace them with the numbers you want?
  댓글 수: 2
suchismita
suchismita 2014년 6월 30일
actually i dont want any repetition in y if repeating than can i change with any number which is not there in y...like that way also can i do???? that also will work for me
suchismita
suchismita 2014년 6월 30일
how can i replace the repetition values by anything else...?????

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Andrei Bobrov
Andrei Bobrov 2014년 6월 30일
y = y(:);
z = z(:);
[~,b] = unique(y,'first');
c = setdiff(z,y);
ii = setdiff((1:numel(y))',b);
out = zeros(size(y));
jj = sort(b);
out(jj) = y(jj);
out(ii) = c(1:numel(ii));

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by