how to replace elements of a matrix in a sequence by comparing with another?
조회 수: 1 (최근 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...
댓글 수: 0
채택된 답변
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?
추가 답변 (1개)
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 Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!