Neglecting difference between two values if it is very small so that value1= value2
Afficher commentaires plus anciens
I am working on a dataset. After some eigendecompostion process. I realise the difference between my values are as small as 1.8097e-14 which is my further implementation process.
Example
data1(1:10) = 0 0.1502 0.2970 0.4371 0.5673 0.6845 0.7863 0.8702 0.9343 0.9773
data2(1:10) = -0.0000 0.1502 0.2970 0.4371 0.5673 0.6845 0.7863 0.8702 0.9343 0.9773
C= data1(1:10)-data2(1:10)
C =
1.0e-12 *
0.0862 0.1227 0.1545 0.0772 0.1019 0.1178 -0.0174 0.0048 0.0170 0.0181
How do I code that the these difference be neglected so that values in data1 & data2 will be equal since the difference is very small
Réponses (1)
Fangjun Jiang
le 28 Juil 2021
Modifié(e) : Fangjun Jiang
le 28 Juil 2021
0 votes
To compare element by element, abs(C) < Tolerance
To compare the two vectors as a whole, all(abs(C) < Tolerance)
or use
ismembertol(C,0,Tolerance)
7 commentaires
Stephen23
le 29 Juil 2021
abs(C) < 1e-10
Fangjun Jiang
le 29 Juil 2021
It is a small number like the one @Stephen Cobeldick gave. It is the difference that can be neglected based on the meaning of your data.
Cutie
le 29 Juil 2021
Fangjun Jiang
le 29 Juil 2021
You goal is to compare if Data1 and Data2 are equal,
instead of using "if Data1==Data2 (or Data1-Data2==0)" which are problematic,
you use "if abs(Data1-Data2)<1e-6"
Cutie
le 29 Juil 2021
Fangjun Jiang
le 29 Juil 2021
I guess you could to that. The solution is clear, do whatever to get the result you need.
Catégories
En savoir plus sur Fourier Analysis and Filtering 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!