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
vấn đề của tôi là bất cứ khi nào h1 (i) hoặc h2 (i) == 0 tôi nhận được thông tin như mong đợi. Tuy nhiên trong khoảng cách KL tôi giả sử để trở về 0 bất cứ khi nào họ h1 hoặc h2 == 0 làm thế nào tôi có thể làm điều đó mà không cần sử dụng một vòng lặp?Khoảng cách giữa các biểu đồ - matlab
Đó là thực sự khó khăn để giúp bạn nếu bạn không yêu cầu tốt hơn câu hỏi. Tôi không thể tìm thấy sai lầm của bạn, hoặc nếu tôi không biết những gì chương trình nên làm ở nơi đầu tiên. Xin vui lòng đề nghị một đầu vào mẫu, cho chúng tôi biết đầu ra bạn mong đợi, và những gì đi sai. Chức năng này có phát ra lỗi không? Chức năng không trả về những gì bạn muốn? Tôi đã downvoted câu hỏi của bạn, mặc dù tôi rất vui khi sửa đổi phiếu bầu của tôi nếu câu hỏi được cải thiện. – Jonas
hi @Jonas cảm ơn câu trả lời hàng ngày vì bạn có thể thấy tôi đang học khi chúng tôi đi. hãy để tôi chỉ định câu hỏi của tôi sau, xin lỗi và cảm ơn bạn – Gilad
@jonas tôi đã chỉnh sửa câu hỏi của mình có thể bạn hãy nhìn vào nó, giả sử chúng ta có h1 = [0: 9] và h2 = [1:10] làm đầu vào tôi sẽ nhận được một lỗi khi tôi có 0 là đầu vào .. log (0) – Gilad