Re: [問題] 點到橢圓最短距離已回收

看板MATLAB作者 (楓霧)時間15年前 (2010/05/12 21:15), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1Bwge6gw (MATLAB)
文章代碼(AID): #1Bwge6gw (MATLAB)