What is wrong with my while loop?
Show older comments
I have this big matrix, 592x528x903 single, called X. I want to see if the X(:,:,1) is not equal to any other in the matrix. I use this code:
b=2;
while b < 902
if X(:,:,1) ~= X(:,:,b)
b
end
b=b+1;
end
disp done
I get nothing on the screen, except done, so first I thought they all where equal. The problem is that if i use "equal to", i get the same response, nothing on the screen.
b=2;
while b < 902
if X(:,:,1) == X(:,:,b)
b
end
b=b+1;
end
disp done
Something is not working, they can't be both equal and not equal at the same time, or am I wrong?
Accepted Answer
More Answers (1)
Comparing matrices is easier if you use isequal command.
You should use it like,
if(isequal(X(:,:,1),X(:,:,b)))
What you're actually doing while using == or ~= is extracting a logical matrix as the result. Check this below example,
A = [1,2;3 4];
B = [1 0;3 4];
A==A
ans =
1 1
1 1
A==B
ans =
1 0
1 1
You see the problem?
Whereas, if you use isequal,
isequal(A,A)
ans =
1
isequal(A,B)
ans =
0
1 Comment
Jet Verheij
on 15 Feb 2018
Categories
Find more on Number Theory in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!