【问题标题】:Find point of intersection between histfit and line - MATLAB查找 histfit 和直线之间的交点 - MATLAB
【发布时间】:2014-04-17 00:23:33
【问题描述】:

如何在不使用数据光标的情况下找到 x = 0.5 处红色高斯的准确 y 坐标?

我希望蓝线在触及高斯时结束。但我需要找到以红色显示的histfit 的高斯与0.5 处的蓝线之间的交点。我可以按如下方式访问histfit 图的数据点:

C = get(get(gca, 'Children'), 'YData');
C{1,1}

line([0.5 0.5],[0 max(C{1,1})],'Color','b');

但是,高斯的数据点与该轴无关。意思是,C{1,1} 的 x 轴是从 1 到 100,而不是从 0.1 到 0.9。

在 0.5 处找到高斯的 y 坐标以便我可以用它替换 max(C{1,1}) 的最简单方法是什么?

【问题讨论】:

    标签: matlab histogram gaussian


    【解决方案1】:

    获取XData 也应该为您提供正确的 x 值:

    C = get(get(gca, 'Children'), 'XData');
    

    或者,YData 的值应该是固定间隔的,即使比例不正确(因为它源自 hist),因此您可能会在情节。

    0.1 和 0.85 之间的点 x=0.5(大约来自绘图)缩放为 1 和 100 之间的点 x=53.33。如果 x=53 处的 y 值不足以准确绘图,您可以只需在 53 和 54 之间插入值就足够了。

    这里有一些代码应该可以完成这项工作:

    XPlotRange = [0.1 0.85];
    XDataRange = [1 100];
    XPlotToInterp = 0.5;
    XDataToInterp = XDataRange(1) + (XPlotToInterp - XPlotRange(1))*diff(XDataRange)/diff(XDataRange);
    XData1 = floor(XDataToInterp);
    XData2 = ceil(XDataToInterp);
    YInterp = interp1([XData1 XData2], [YData(XData1) YData(XData2)], XDataToInterp);
    

    这里YInterp 是对应x 值的插值y 值。

    【讨论】:

    • 由于XDataYData 给出不同比例的值,有没有办法按照您的建议自动计算以通过插值获得正确的值?
    • 我添加了可以做到这一点的代码。我仍然认为你可以从代码中得到正确的 x 值(我写的第一个选项)。
    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2015-02-28
    • 2013-12-13
    • 2013-03-09
    • 1970-01-01
    相关资源
    最近更新 更多