簡體   English   中英

查找histfit和直線之間的交點-MATLAB

[英]Find point of intersection between histfit and line - MATLAB

如何在不使用數據游標的情況下找到x = 0.5時紅色高斯的精確y坐標?

<code> histfit </ code>圖

我希望藍線在接觸高斯時結束。 但是我需要找到以紅色顯示的histfit的高斯與以histfit表示的藍線之間的交點。 我可以按以下方式訪問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})

同樣獲得XData應該會為您提供正確的x值:

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

另外, YData的值YData應以規則的間隔,即使不是正確的比例(因為它起源於hist )也是如此,因此您可能會在圖中找到對應於x = 0.5的y值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM