您可以在调用histfit 期间使用输出参数来获取生成的图形的句柄,其中包含形成直方图的补丁对象的所有信息和拟合的线对象。然后,只需进行一些数学运算即可获得 x 和 y 方向的中点。
这是一个例子:
clear
clc
close all
%// Generate data
rng default;
r = normrnd(10,1,100,1);
%// Use output to get handle
hHist = histfit(r);
hold on
现在补丁数据对应hHist的第一个条目:
hHist =
2x1 graphics array:
Patch
Line
获取 y 数据并找到中点:
AllYData = get(hHist(1),'YData');
YData = AllYData(2,:)/2;
请注意,AllYData 是一个 4x10 数组,其中包含形成每个单独条形的 4 个角的 y 坐标。因此我们只需要最大值(两个顶角中的任何一个)。
x 数据也一样:
AllXData = get(hHist(1),'XData');
这里的AllXData 是一个 4 x 10 的数组,包含构成直方图的条形的每个角的 x 坐标。因此,我们只对中间 2 感兴趣,形成每个柱的实际 x 范围。然后找出中心很容易:
XRanges = AllXData(2:3,:);
MidPoints = sum(XRanges)/2;
并使用scatter 显示所有内容:(当然,您也可以使用plot):
scatter(MidPoints,YData,80,'y','filled')
输出:
耶!