logical vector equality
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Often I run into a situation where I need to determine if two vectors are equal and do something if they are. However, vec1==vec2 gives me a vector - not a logical 0 or 1. So I have to mess with that and it seems that Matlab should be able to tell me if two vectors or even structures are equal. However, I am not smart enough to figure how to make it do that without writing extra code every time it arises.
My question is how to I get a 0 or 1 result from v1==v2 when they are vectors?
0 comentarios
Respuesta aceptada
Paulo Silva
el 2 de Jul. de 2011
all(vec1==vec2)
and if you want to ignore the difference between column and row vectors do
all(vec1(:)==vec2(:))
There's also this way to compare
isequal(vec1,vec2)
With the isequal you don't have the problem with the dimensions mismatch like you have with the case vec1==vec2
1 comentario
Matt Fig
el 2 de Jul. de 2011
In addition to what Paulo says, IF statements automatically use ALL for vector conditionals. For example:
A = [1 2 3 4];
B = A;
if A==B
disp('InIF')
end
But now:
B(4) = 7;
if A==B
disp('InIF')
end
So if you know A and B will always have the same size and type, using == with an IF statement is fine. However, if there is any doubt about size or type, ISEQUAL is preferred.
Más respuestas (0)
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!