簡體   English   中英

Matlab獲取點坐標

[英]Matlab getting point coordinates

如何獲得特定點的坐標?

我想獲得Y = 18.1的點的X坐標; Y = 33 Y = 70這些點必須位於我繪制的函數上。

樣例代碼

t = [0  5   10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95  100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180];
y = [0  5   9   19  25  32  46  65  79  90  100 115 123 141 153 159 160 171 181 185 193 200 205 211 215 220 223 222 225 224 228 231 231 228 235 234 231];
plot(t,y) , grid on

不幸的是,您試圖找到與y相關聯的t的值,並且您的函數不是單調的,因此我們實際上需要編寫模擬線性插值。 請注意,也許有更好的方法,但是我現在不知道。 請嘗試以下代碼,其中yVals是您想要關聯的t的值,並且possArray將包括可能滿足這些條件的t所有值。

clc; close all; clear all;
t = [0  5   10  15  20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95  100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180];
y = [0  5   9   19  25  32  46  65  79  90  100 115 123 141 153 159 160 171 181 185 193 200 205 211 215 220 223 222 225 224 228 231 231 228 235 234 231];
plot(t,y)
grid on
hold on
yVals = [18.1,33,70,222.5,230];
possArray = cell(1,numel(yVals));
iter = 1;
for val = yVals;
    poss = [];
    possNum = 1;
    for i = 1:numel(y)-1
        if y(i) <= val && y(i+1) >= val
            minDiff = val-y(i);
            yDiff = y(i+1)-y(i);
            percAlong = minDiff/yDiff;
            poss(possNum) = (t(i+1)-t(i))*percAlong+t(i);    
            possNum = possNum+1;
        end
    end
    possArray{iter} = poss;
    iter = iter + 1;
end    

colors = hsv(numel(yVals));
legendCell = cell(numel(yVals)+1,1);
legendCell{1} = 'Original Line';
for i = 1:numel(yVals)
    plot(possArray{i},yVals(i)*ones(size(possArray{i})),...
        'x','MarkerSize',10,'LineWidth',2,'Color',colors(i,:))
    legendCell{i+1} = ['Values for Y = ' ,num2str(yVals(i))];
end
legend(legendCell)
hold off

如前所述,這是線性插值,因此,如果您需要復雜的線性插值,則概念應相似

UPDATE

將上面的代碼更新為更加簡潔,並添加了一個圖,指示單個值可能會出現多種可能性,並且該代碼將返回所有可能性。

暫無
暫無

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

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