不确定这是什么';直方图代码';他在MATLAB中做什么

不确定这是什么';直方图代码';他在MATLAB中做什么,matlab,computer-vision,histogram,matlab-cvst,quantization,Matlab,Computer Vision,Histogram,Matlab Cvst,Quantization,我有下面的代码是给我的,但我不确定这里的逻辑是什么。我相信,这样做可以对我的数据进行柱状图/量化。代码如下: 输入: x = 180.*rand(1,1000); %1000 points from 0 to 180 degrees. binWidth = 20; %I want the binWidth to be 20 degrees. 主要功能: % -------------------------------------------------------------

我有下面的代码是给我的,但我不确定这里的逻辑是什么。我相信,这样做可以对我的数据进行柱状图/量化。代码如下:

输入:

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
是这样计算的,以及为什么/how
w
是这样计算的。事实上,在所有事情中,
w
最让我困惑。我真的无法理解这里的逻辑,或者真正的意图。请详细说明这一逻辑。谢谢。

他正在用
lb x1+binWidth
装箱。所以,如果x接近170,那么
w
将接近
1-(170-150)/20=0

谢谢你,奥利格。所以,有几件事。。。一) 到底为什么——或者如何——测量到下仓x1的距离意味着什么有用的东西?明确地说,他是在这种情况下使用它的。二) 回到
x1
-我不明白为什么当给定一个从0到180的数据时,他基本上从[-10 10],[10 30]等开始绘制第一个直方图。为什么不去[0 20],[20 40),等等?这不是更有意义吗?非常感谢!!而且我认为你所写的
w
是颠倒的。它越来越接近1,数字越靠近左边。@Learnaholic correct about
w
将会修正,太累了:)。我不知道他为什么这么做,可能只是一个打字错误,他的意思是+0.5。我愿意方法是使用
histc()
进行bining,更清晰。是的,这让人很困惑。问题是这些代码实际上是MATLAB本身的内部代码。-)我不确定这是一个打字错误!这是MATLAB本身的。请看计算机视觉工具箱中的extractHogFeature.m
bin = floor(180/20-0.5) = floor(9-0.5) = floor(8.5) = 8; 
bin = floor(`0/20-0.5) = floor(-0.5) = floor(-1) = -1;