As pointed out by @John in the comments, you are getting this error because of finite precision of floating point numbers in the computer systems. A way around this is to compare numbers with tolerance. To do that here is one option, replace
if check == 0.25
with
if ismembertol(check, 0.25, 1e-6)
the third number to ismembertol() is the tolerance value i.e. how much difference from 0.25 on the left side of comparison will be considered equal to 0.25. For your code, this gives following a total of 13 combinations of weights
weight =
0.1600 0.2600 0.2800 0.2800
0.1600 0.2800 0.2600 0.2800
0.1600 0.2800 0.2800 0.2600
0.2500 0.2500 0.2500 0.2500
0.2600 0.1600 0.2800 0.2800
0.2600 0.2800 0.1600 0.2800
0.2600 0.2800 0.2800 0.1600
0.2800 0.1600 0.2600 0.2800
0.2800 0.1600 0.2800 0.2600
0.2800 0.2600 0.1600 0.2800
0.2800 0.2600 0.2800 0.1600
0.2800 0.2800 0.1600 0.2600
0.2800 0.2800 0.2600 0.1600
If you increase the tolerance
if ismembertol(check, 0.25, 1e-3)
then even more elements will satisfy the equality. 1e-3 gives 61 points
weight =
0.1600 0.2600 0.2800 0.2800
0.1600 0.2700 0.2700 0.2800
0.1600 0.2700 0.2800 0.2700
0.1600 0.2800 0.2600 0.2800
0.1600 0.2800 0.2700 0.2700
0.1600 0.2800 0.2800 0.2600
0.1900 0.2500 0.2700 0.2800
0.1900 0.2500 0.2800 0.2700
0.1900 0.2700 0.2500 0.2800
0.1900 0.2700 0.2800 0.2500
0.1900 0.2800 0.2500 0.2700
0.1900 0.2800 0.2700 0.2500
0.2400 0.2500 0.2500 0.2600
0.2400 0.2500 0.2600 0.2500
0.2400 0.2600 0.2500 0.2500
0.2500 0.1900 0.2700 0.2800
0.2500 0.1900 0.2800 0.2700
0.2500 0.2400 0.2500 0.2600
0.2500 0.2400 0.2600 0.2500
0.2500 0.2500 0.2400 0.2600
0.2500 0.2500 0.2500 0.2500
0.2500 0.2500 0.2600 0.2400
0.2500 0.2600 0.2400 0.2500
0.2500 0.2600 0.2500 0.2400
0.2500 0.2700 0.1900 0.2800
0.2500 0.2700 0.2800 0.1900
0.2500 0.2800 0.1900 0.2700
0.2500 0.2800 0.2700 0.1900
0.2600 0.1600 0.2800 0.2800
0.2600 0.2400 0.2500 0.2500
0.2600 0.2500 0.2400 0.2500
0.2600 0.2500 0.2500 0.2400
0.2600 0.2800 0.1600 0.2800
0.2600 0.2800 0.2800 0.1600
0.2700 0.1600 0.2700 0.2800
0.2700 0.1600 0.2800 0.2700
0.2700 0.1900 0.2500 0.2800
0.2700 0.1900 0.2800 0.2500
0.2700 0.2500 0.1900 0.2800
0.2700 0.2500 0.2800 0.1900
0.2700 0.2700 0.1600 0.2800
0.2700 0.2700 0.2800 0.1600
0.2700 0.2800 0.1600 0.2700
0.2700 0.2800 0.1900 0.2500
0.2700 0.2800 0.2500 0.1900
0.2700 0.2800 0.2700 0.1600
0.2800 0.1600 0.2600 0.2800
0.2800 0.1600 0.2700 0.2700
0.2800 0.1600 0.2800 0.2600
0.2800 0.1900 0.2500 0.2700
0.2800 0.1900 0.2700 0.2500
0.2800 0.2500 0.1900 0.2700
0.2800 0.2500 0.2700 0.1900
0.2800 0.2600 0.1600 0.2800
0.2800 0.2600 0.2800 0.1600
0.2800 0.2700 0.1600 0.2700
0.2800 0.2700 0.1900 0.2500
0.2800 0.2700 0.2500 0.1900
0.2800 0.2700 0.2700 0.1600
0.2800 0.2800 0.1600 0.2600
0.2800 0.2800 0.2600 0.1600
So it depends on how much tolerance is acceptable for your problem.
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Explore similar technical troubleshooting questions and verified MATLAB solutions: