- swapping a matrix
2 ビュー (過去 30 日間)
古いコメントを表示
a =
1 3 5 6 7
2 3 2 3 2
5 6 7 8 7
b=
5 2 1 3 7
6 8 2 3 1
5 7 8 6 3
how to swap b to a.
ans=
1 3 5 6 7
2 3 2 3 2
5 6 7 8 7
0 件のコメント
採用された回答
Andrew Newell
2014 年 4 月 24 日
If I understand your latest comment, you begin by finding the unique numbers:
an = unique(a,'stable').'
bn = unique(b,'stable').'
an =
1 3 5 6 7 2 8
bn =
5 2 1 3 7 6 8
Now you take all the 5's in b and replace them by 1's, all the 2's by 3's, and so on, all at once (otherwise in a later step all the 1's will be changed back to 5's). You can do this by initializing a new matrix and putting all the numbers in it:
c = zeros(size(b));
for i=1:length(an)
idx = (b==bn(i));
c(idx) = an(i);
end
c
c =
1 5 7 8 6
2 3 5 8 7
1 6 3 2 8
This seems to be what you're saying, although the result is completely different from the answer you provided.
0 件のコメント
その他の回答 (1 件)
Andrew Newell
2014 年 4 月 23 日
I have two theories for what you mean:
b=a
just makes b equal to a. Or
z=b
b=a
a=z
8 件のコメント
Geoff Hayes
2014 年 4 月 24 日
Was there some sort of suggestion (or part of the problem description) that to do the swap you can use the unique values of a and b (retrieved via stable)?
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!