I am facing a problem with ismember subfunciton in Matlab.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am facing a problem with ismember subfunciton in Matlab.
UseCase:
Simulation_Time_Vecort = 0:0.01:42;
TestVector =
0 1.0000
0.7000 0
0.8000 1.0000
7.3100 0
7.4100 1.0000
13.6200 1.0000
20.3200 1.0000
27.0200 1.0000
33.0200 1.0000
39.9200 1.0000
Simulation_Values_Vecort = zeros(1,length(Simulation_Time_Vecort));
FlagSignalName_Value = [Simulation_Values_Vecort ; Simulation_Values_Vecort]';
FlagSignalName_Value(:,1) = double(Simulation_Time_Vecort);
FlagSignalName_Value(:,2) = ismember(Simulation_Time_Vecort,TestVector_Data(:,1)');
Problem: When I try to excute this script, ismember is not executed as expected. For some cases though the value exist in both vectors used in ismember function states above, output is not displayed or updated as value 1. In my case for value ‘0.7000’ ismember result is displayed as 0
0 commentaires
Réponses (1)
Walter Roberson
le 6 Mar 2017
This is expected. http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
If you have a new enough MATLAB version, use ismembertol
5 commentaires
Stephen23
le 6 Mar 2017
Modifié(e) : Stephen23
le 6 Mar 2017
>> A = 0.996;
>> B = 0.994;
>> round2sf(A,2)
ans = 1.0000
>> round2sf(B,2)
ans = 0.99000
The values differ by only 0.002, but rounding to 2 sigfig will make them diverge, not converge. Using a tolerance would resolve this. All pairs of values that differ by a little less than least significant figure and that are on the rounding boundary will diverge...
Guillaume
le 6 Mar 2017
Ah yes, but your values differ on the 3rd significant digit. From the example data provided, I'm assuming that the values only differ by a few eps.
Yes, tolerance comparison is more robust. My suggestion was for if you don't have ismembertol.
Voir également
Catégories
En savoir plus sur Operators and Elementary Operations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!