MATLAB Answers

# Script adapted into a funtion Function not returning equal values

1 view (last 30 days)
C Meek on 22 Jul 2012
Hey everyone,
I'm having a problem where two identical pieces of code are returning different values when run as a script then a function. Trying to keep this as simple as possible, I have two vectors Z and Zt, which represent curves with a number of prominent peaks. I find the peak locations of each curve, then compare their separation distance using an adapted Gaussian function:
1 - exp( (-mu0*Phi(ii)) / (2 * vp^2));
This is an extract from a loop, where Phi contains the difference between each peak of Z and Zt. mu0 and vp won't particularly matter here.
In particular, I have Z and Zt set so that their peak locations are in exactly the same place - and as a result the expression above will be
1 - exp(0) = 0;
for all entries in Phi.
This is exaclty what I want, but when I run this with a function call, it is returning very small values of order 10^-5, instead of zero.
Anyone have any ideas of why this may be?

#### 0 Comments

Sign in to comment.

### Accepted Answer

Geoff on 22 Jul 2012
Floating point precision errors. If you need to test for zero, then test for something like:
if abs(value) < 1e-5
10^-5 does sound rather large for a zero value though.. Are you using single-precision floats?

#### 1 Comment

C Meek on 23 Jul 2012
I'm using double precision. Turns out that the unexpected small numbers were coming from another part of my code which I hadn't taken into account - so all is well, when I adapt it according zero is returned ok!
Thanks

Sign in to comment.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by