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

回答 (3 件)

Steven Lord
Steven Lord 2016 年 4 月 27 日

1 投票

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

1 件のコメント

sbei arafet
sbei arafet 2016 年 4 月 27 日
thanks for the precision

サインインしてコメントする。

Star Strider
Star Strider 2016 年 4 月 27 日

0 投票

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 件のコメント

sbei arafet
sbei arafet 2016 年 4 月 27 日
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 2016 年 4 月 27 日
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.)

サインインしてコメントする。

Torsten
Torsten 2016 年 4 月 27 日
編集済み: Torsten 2016 年 4 月 27 日

0 投票

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.

カテゴリ

タグ

質問済み:

2016 年 4 月 27 日

コメント済み:

2016 年 4 月 27 日

Community Treasure Hunt

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

Start Hunting!

Translated by