exp function is returning zeros

Hi,
i am trying to compute a normal function for all pixels on the image ,
m = mean(I(:));
segma = std (I(:));
fb1=(exp(-abs((I(i)-m).^2)./2.*segma.^2))% Feature based1
fb2=(exp(-abs((I(j)-m).^2)./2.*segma.^2))% Feature based 2
it returns zeros,am i clculating the mean and the std in wrong way !!
Thanks

Antworten (3)

Steven Lord
Steven Lord am 27 Apr. 2016

1 Stimme

Using Symbolic Math Toolbox, we can see what exp(-850) and exp(-950) would be, displayed to 20 digits.
>> vpa(exp(sym([-850; -950])), 20)
ans =
7.0744125465834323713e-370
2.6317352159005409842e-413
The smallest positive double precision number is not quite that small.
>> eps(0)
ans =
4.9407e-324
Star Strider
Star Strider am 27 Apr. 2016

0 Stimmen

Assuming that ‘I’ is single or double, and not uint8 (that would throw an error for std), the most likely possibility is that the exp argument is very large.

2 Kommentare

I=double(dicomread('C:\Users\USER\Desktop\DDN250454 - 0815_002\Unnamed\WB MAC PSF ON - 8265\IM-0001-0001-0001.dcm'))./255;
yes it is, the arguments are in the range of -950 and -850
Star Strider
Star Strider am 27 Apr. 2016
On my computer, the realmin function returns 2.225073858507201e-308, corresponding to exp(-708.396418532264). The exponential function of any value less than -708.396418532264 will return zero. (Even the Symbolic Math Toolbox with its extended resolution returns zero.)

Melden Sie sich an, um zu kommentieren.

Torsten
Torsten am 27 Apr. 2016
Bearbeitet: Torsten am 27 Apr. 2016

0 Stimmen

fb1=exp(-(I(i)-m).^2./(2.*segma.^2))% Feature based1
fb2=exp(-(I(j)-m).^2./(2.*segma.^2))% Feature based 2
By the way: "segma" is "sigma".
Best wishes
Torsten.

Gefragt:

am 27 Apr. 2016

Kommentiert:

am 27 Apr. 2016

Community Treasure Hunt

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

Start Hunting!

Translated by