How can I select y data given a certain x value?
Afficher commentaires plus anciens
Hi,
The attached files contains two columns: the first contains voltage data, while the second current data. I would like to select only those current data whose potential is -1.70007 or -1.7001, depending on the rounding of the value. I am trying like this, but it never enters in the first condition loop, even if I know there are some values with V=-1.7001.
Thank you fo your time
Francesca
clear all
load Zn1.txt
Zn1_data=Zn1;
V_Zn1=Zn1_data(:,1);
A_Zn1=Zn1_data(:,2);
for i=1,length(V_Zn1)
if V_Zn1(i)==-1.7001
AA_Zn1(i)=A_Zn1(i);
else
AA_Zn1(i)=0;
end
end
Réponse acceptée
Plus de réponses (2)
David Hill
le 19 Nov 2019
AA_Zn1=Zn1_data(:,1).*(Zn1_data(:,1)==-1.7001|Zn1_data(:,1)==-1.70007);
2 commentaires
FRANCESCA ROSSI
le 19 Nov 2019
David Hill
le 19 Nov 2019
A_Zn1(V_Zn1==-1.7001|V_Zn1==-1.7007);
Steven Lord
le 19 Nov 2019
What you're seeing is the first example in the "Avoiding Common Problems with Floating-Point Arithmetic" section on this documentation page. Be very, very careful when using == (which performs exact, down-to-the-last-bit comparison) on floating point numbers. Use a tolerance or use ismembertol.
a = 0:0.1:1;
% ==
a == 0.3 % all elements are false
a(4) - 0.3 % small but not EXACTLY zero
% Tolerance -- eps is "close enough" in this case
abs(a-0.3) < eps % one element is true, the rest are false
% Ismembertol
ismembertol(a, 0.3) % one element is true, the rest are false
Catégories
En savoir plus sur Phased Array System Toolbox dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!