Remove negative 0 previous solution does not work in this context
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Mike
il 29 Giu 2022
Commentato: Corey McDowell
il 29 Giu 2022
Attempting to use the solution which removes negative 0 as shown by Rick here:
In does not seem to work for me in this context why?
exp_phase_shift is a 1x8
I can see element 7 a small value of something to the -16
I am able to use this solution:
smallValues = abs(exp_phase_shift_re) < 0.000000001;
exp_phase_shift_re(smallValues) = 0;
Want to know why:
A(A==0)=0;
Does not work
Thanks
Mike
0 Commenti
Risposta accettata
Corey McDowell
il 29 Giu 2022
the equality operator is not a very good fit for floating point numbers. you should instead specify a tolerance
% random values in the range (a,b)
a = 0;
b = 2E-5;
A = a + (b-a)*rand(1,10)
% this is the solution you want
tol = 1E-5;
A(abs(A-0) < tol) = 0
1 Commento
Corey McDowell
il 29 Giu 2022
to be clearer, the equality operator does not work because it does not have a tolerance, 1E-15 is a different value from 0, so they are not equal. the solution you reference is specifically talking about signed 0 which is arithmatically identical to a 0, but symbolically is a distinction between the two onesided limits as they are approach 0
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!