'Not equal too' statement not working
6 views (last 30 days)
Show older comments
I have a program that gives the user a 5x5 grid and asks them to click on the stated coordinate. If they respond correctly, a second coordinate is generated. If not, an error message is displayed. A correct response is tested using the following code:
if UserResponse ~= RequiredCoordinate
Error.String = 'INCORRECT';
else
Error.String = '';
end
The problem is that it doesn't always work.
By not suppressing the variables I can see that the values aren't equal, however the code behaves as if they are equal, treating it like a correct response. But this problem only occurs sometimes.
I've run the code on 3 different machines, all running the same version (R2015, 1 machine runs a student license if that makes a difference) and sometimes the code runs as expected and others this problem occurs.
Can anyone suggest a solution?
Thank you.
4 Comments
dpb
on 1 Dec 2015
Try
~all(UserResponse==RequiredCoordinate)
instead or if the values aren't integers see the FAQ (and will still need the above if is an array of coordinates rather than single value)--
Answers (2)
dpb
on 2 Dec 2015
As noted in the above comment prior to seeing your response...
>> x=[5,3]; y=[5,2];
>> all(x==y)
ans =
0
>> y(2)=3;
>> all(x==y)
ans =
1
>>
Again, note the caution re: floating point comparisons if the values aren't integer; you'll have to use "fuzzy" comparison for a robust test.
0 Comments
James Tursa
on 2 Dec 2015
Edited: James Tursa
on 2 Dec 2015
Another method using the function isequal, which is useful for arrays:
if ~isequal(UserResponse,RequiredCoordinate)
0 Comments
See Also
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!