Problem with ismember with certain numbers in a loop
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Libby M
am 3 Sep. 2019
Kommentiert: Star Strider
am 3 Sep. 2019
Here is the code I have writen, as far as I can see B should alternating 1 and 0 (B=1, 0, 1, 0, 1 etc) but at (as far as I can tell) random points it does not do that. I can't see what I have done wrong and I don't know if I have misunderstood something with "ismember".
I have noticed this with number=0.3250 for example, ismember(number, setcom)=0 but ismember(0.3250, setcom)=1. If however I pause the code type in compand line "number" I get 0.3250 and I get ismember(number, setcom)=0, but if in the comand line I also type "number =0.3250" and then ismember(number, setcom)=1.
I don't understand why it works for most numbers in the loop but not all. Any help would be very much appreciated.
set=[0.125:0.0125:0.5];
setcom=[0.125:0.025:1];
B=zeros(length(set), 1);
for i=1:length(set)
number=set(i);
compare=ismember(number,setcom);
B(i,1)=compare;
end
2 Kommentare
KALYAN ACHARJYA
am 3 Sep. 2019
set=(0.125:0.0125:0.5);
setcom=(0.125:0.025:1);
B=zeros(length(set),1);
compare=ismember(set,setcom)
Is there loop necessity? Note on Floating points number as answered by @Star
Akzeptierte Antwort
Star Strider
am 3 Sep. 2019
Use ismembertol instead. You are likely dealing with ‘floating-point approximation error’. See Floating-Point Numbers for a full discussion.
2 Kommentare
Star Strider
am 3 Sep. 2019
As always, my pleasure!
This is one of the many interesting aspects of digital computations.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!