function [ d ] = hcompare_KL(h1,h2)
%This routine evaluates the Kullback-Leibler (KL) distance between histograms.
% Input: h1, h2 - histograms
% Output: d – the distance between the histograms.
% Method: KL is defined as:
% Note, KL is not symmetric, so compute both sides.
% Take care not to divide by zero or log zero: disregard entries of the sum for which with H2(i) == 0.
temp = sum(h1 .* log(h1 ./ h2));
temp(isinf(temp)) = 0; % this resloves where h1(i) == 0
d1 = sum(temp);
temp = sum(h2 .* log(h2 ./ h1)); % other direction of compare since it's not symetric
temp(isinf(temp)) = 0;
d2 = sum(temp);
d = d1 + d2;
end
मेरी समस्या है कि जब भी h1 (i) या h2 (i) == 0 मैं inf अपेक्षा के अनुरूप है जो हो रही है। हालांकि केएल दूरी में मुझे लगता है कि जब भी वे एच 1 या एच 2 == 0 लूप का उपयोग किए बिना मैं कैसे कर सकता हूं?Kullback-Leibler (केएल) हिस्टोग्राम के बीच की दूरी - matlab
यदि आप बेहतर मत पूछो मदद करने के लिए वास्तव में मुश्किल है होना चाहिए प्रशन। मुझे आपकी गलती नहीं मिल सकती है अगर मुझे नहीं पता कि कार्यक्रम को पहले स्थान पर क्या करना चाहिए। कृपया नमूना इनपुट का सुझाव दें, हमें बताएं कि आप किस आउटपुट की अपेक्षा करते हैं, और क्या गलत है। क्या फ़ंक्शन एक त्रुटि फेंकता है? क्या फ़ंक्शन आपको वापस नहीं लौटाता है? मैंने आपके प्रश्न को कम कर दिया है, हालांकि अगर प्रश्न सुधारता है तो मुझे अपने वोट में संशोधन करने में खुशी होगी। – Jonas
हाय @ जोनास दैनिक उत्तरों के लिए धन्यवाद क्योंकि आप देख सकते हैं कि हम सीख रहे हैं जैसे हम जाते हैं। मुझे बाद में अपना प्रश्न निर्दिष्ट करने दें, क्षमा करें और आपको धन्यवाद – Gilad
@jonas मैंने अपना प्रश्न संपादित कर लिया है कृपया इसे देखें, मान लें कि हमारे पास h1 = [0: 9] और h2 = [1:10] इनपुट के रूप में मुझे मिलेगा एक त्रुटि जब मेरे पास इनपुट के रूप में 0 है .. लॉग (0) – Gilad