Clear Filters
Clear Filters

logical vector equality

10 views (last 30 days)
Truman
Truman on 2 Jul 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?

Accepted Answer

Paulo Silva
Paulo Silva on 2 Jul 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 Comment
Matt Fig
Matt Fig on 2 Jul 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.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!