1

У меня есть следующий код, который мне дал, но я не уверен, что такое логика. Я полагаю, идея состоит в том, что это приведет к гистограмме/квантованию моих данных. Вот код:Не знаете, что делает этот «код гистограммы» в MATLAB

вход:

x = 180.*rand(1,1000); %1000 points from 0 to 180 degrees. 
binWidth = 20;   %I want the binWidth to be 20 degrees. 

Основная функция:

% ------------------------------------------------------------------------- 
% Compute the closest bin center x1 that is less than or equal to x 
% ------------------------------------------------------------------------- 

function [x1, b1] = computeLowerHistBin(x, binWidth) 

% Bin index 
bin = floor(x./binWidth - 0.5); 

% Bin center x1 
x1 = binWidth * (bin + 0.5); 

% add 2 to get to 1-based indexing 
b1 = bin + 2; 
end 

Наконец, последний 'квантуется' данные:

w = 1 - (x - x1)./binWidth 

Вот что я не получается: я не понимаю - вообще-то, почему именно x1 вычисляется так, как есть, а также почему/как w вычисляется так, как есть. На самом деле, из всех вещей, w смущает меня больше всего. Я буквально не могу понять логику здесь, или то, что действительно предназначено. По достоинству оцените подробное объяснение этой логики. Благодарю.

ответ

1

Он является бининг с lb <= x < up и разделяет интервал [0,180] в [-10,10), [10, 30), [30,40) ..., [150,170), [170,190).

Пусть x = 180, то:

bin = floor(180/20-0.5) = floor(9-0.5) = floor(8.5) = 8; 

а если x = 0:

bin = floor(`0/20-0.5) = floor(-0.5) = floor(-1) = -1; 

, которые соответственно переводят в x1 = 20 * (8+0.5) = 170 и x1 = -10 который кажется, что функция предполагает lowerHistBin().

В конце концов, w просто измеряет расстояние от точки x от соответствующего нижнего бункера x1. Обратите внимание на то, что w находится в (0,1], с w равно 1, когда x = x1 и приближается к 0, когда x -> x1+binWidth. Таким образом, если х сказать приближается 170, то w подойдет 1 - (170-150)/20 = 0.

+0

Спасибо Олег. Так, пару вещей. .. I) Почему - или как - на Земле измеряет расстояние до нижнего бункера x1, означает что-нибудь полезное? Чтобы быть ясным, он использует его в этом контексте [здесь] (http://stackoverflow.com/questions/26344764/not-getting-what-spatial-weights-for-hog-are/26346802?noredirect=1#comment41356464_26346802). II) Возвращаясь к 'x1' - я не понимаю, почему, когда данные ограничены от 0 до 180, он в основном делает первую гистограмму, начиная с [-10 10), [10 30] и т. Д. Почему бы go [0 20], [20 40] и т. д.? Разве это не имеет смысла? Большое спасибо!! – Spacey

+0

Также я думаю, что вы написали, насколько 'w' инвертировано. Он приближается к 1, тем ближе к левому краю. – Spacey

+0

@Learnaholic правильный о 'w' внесет изменения, был слишком устал :). Я понятия не имею, почему он это делает, может быть, просто опечатка, и он имел в виду + ​​0,5. Я все равно буду искать 'histc()' для более четкого определения. – Oleg