- swapping a matrix
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Anusha
el 23 de Abr. de 2014
Comentada: Geoff Hayes
el 24 de Abr. de 2014
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 comentarios
Respuesta aceptada
Andrew Newell
el 24 de Abr. de 2014
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 comentarios
Más respuestas (1)
Andrew Newell
el 23 de Abr. de 2014
I have two theories for what you mean:
b=a
just makes b equal to a. Or
z=b
b=a
a=z
8 comentarios
Geoff Hayes
el 24 de Abr. de 2014
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)?
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!