我有以下代码给了我,但我完全不确定这里的逻辑是什么。我相信这个想法是这将直方图/量化我的数据。这是代码:
输入:
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
最让我困惑。我实际上无法理解这里的逻辑,或者真正意图的是什么。希望详细说明这一逻辑。感谢。
答案 0 :(得分: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
在x = x1
时为1,在x -> x1+binWidth
时接近0。因此,如果x表示接近170,则{{ 1}}将接近w
。