2015-06-04 68 views
1

我用一個公式來計算一個參數,公式涉及取一個有時值爲零的對數。爲了處理這種情況下,我在文獻閱讀的技術把一些增量值如下:德爾塔值在計算對數時

ln(delta + A) 

這裏,放慢參數A是範圍從[0, 1]的實數。

我應該分配給delta什麼值?我應該分配delta = 1,以便ln(delta + A)將返回0每當A0

此外,有沒有使用自然對數或base10或base2對數的選擇規則?

以下是我使用的公式:

Lw = exp[ 1/N(sum[ log(delta + Lw(x, y)) ]) ] 

請參閱此鏈接解釋:Log average luminance

+0

您能否告訴我們更多關於結果的意圖是什麼,作爲A提供的值的範圍可以是什麼? –

+0

這聽起來不對。您應該重新評估您的配方,而不是通過這種方式進行配頁。 – duffymo

+0

@PhilH:A是範圍[0,1]中的實數 – kunal18

回答

1

不知道什麼A的範圍,這是很難回答的問題。

如果A通常是一個整數,但有時會發生0,那麼返回log(A + 1)將做你想要的,但當A爲0時返回0。問題是如果對於使用答案會有什麼影響您使用log(A + 1)而不是log(A),因爲它們在數學上有所不同。

- 編輯 -

對於A作爲在範圍[0,1]的實數值,日誌(A)的值將是負的反正。在這種情況下log(0)的明智答案是-Infinity。大多數編程語言使用IEEE 754 standard來表示浮點值,並且該標準包含-Infinity作爲特殊值之一的值。在這裏使用-Infinity會保持單調性,即,如果a爲<b,即使a == 0,則log(a)<log(b)。代碼將取決於正在使用的日誌的實現;除非可以肯定的是日誌(0)將返回負無窮大,明顯的事情做的只是檢查:

if(A == 0) 
    result = -INFINITY; // macro in math.h 
else 
    result = log(A); 

爲(GNU)C的例子。

+0

嗨,我編輯了這個問題。參數A是一個範圍從[0,1] – kunal18

+0

的實數。我已經更新了問題和我正在使用的公式的詳細信息。請檢查一次。 – kunal18