how to replace elements of a matrix in a sequence by comparing with another?
3 ビュー (過去 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!