Effacer les filtres
Effacer les filtres

logical vector equality

10 vues (au cours des 30 derniers jours)
Truman
Truman le 2 Juil 2011
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?

Réponse acceptée

Paulo Silva
Paulo Silva le 2 Juil 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 commentaire
Matt Fig
Matt Fig le 2 Juil 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.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by