找到histfit和line之间的交点 - MATLAB

时间:2014-04-17 00:23:34

标签: matlab histogram gaussian

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

<code>histfit</code> plot

我希望蓝线在触及高斯时结束。但是我需要找到红色显示的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})代替它?

1 个答案:

答案 0 :(得分:0)

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

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

或者,YData的值应该是有规律的间隔,即使不是在正确的范围内(因为它来自hist),所以你可能会找到对应于x的y值在图中= 0.5。

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值。