Re: [問題] 點到橢圓最短距離已回收
※ 引述《a9506528 (笨笨笨笨笨笨笨笨笨笨笨)》之銘言:
: 假設任一點(x1,y1)求跟橢圓的最短距離
: 假設我的橢圓 方程式x^2/0.3^2+y^2/0.2^2=1
: 參數化 x2=0.3*cos(phi)
: y2=0.2*sin(phi)
: 用fminbnd求(x1-x2)^2+(y1-y2)^2極小值
: 但是我的(x1,y1)有一百多點要跟橢圓求最短距離
: 想用迴圈進去跑,請問如何使用?
其實就是看有多少data就跑幾次
廢話結束 來看程式吧
function test
clc
clear
Data = [1 2;-1 -1;-0.1 0.1]; %測試3個點
Len = size(Data,1);
Sol = zeros(Len,3);
for n=1:Len
eq = @(phi) (0.3*cos(phi)-Data(n,1))^2+(0.2*sin(phi)-Data(n,2))^2;
[phi,eq] = fminbnd(eq,0,2*pi);
Sol(n,1) = 0.3*cos(phi);
Sol(n,2) = 0.2*sin(phi);
Sol(n,3) = eq;
end
disp(Sol)
程式結果:
x y 最小距離
0.1686 0.1654 4.0569
-0.2379 -0.1218 1.3520
-0.1250 0.1818 0.0073
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.207.32
推
05/13 15:22, , 1F
05/13 15:22, 1F
推
05/13 16:12, , 2F
05/13 16:12, 2F
討論串 (同標題文章)