看板 MATLAB 關於我們 聯絡資訊
如題!! 我現在原點設在[85,58] 我想取的二維中的任兩點夾角要怎樣求呢?? 我想了好幾天一直弄不出來XD 對了~矩陣大小為170*116 [補充] 我後來這樣寫~請大家幫我看這樣是對的嗎? imgsize1=size(re); for i5=1:imgsize1(1) for j5=1:imgsize1(2) if i5<=85 a1=(i5.^2+85.^2).^(1/2); b1=(j5.^2+116.^2).^(1/2); ab1=(i5.*j5)+(85.*116); c1=ab1/a1*b1; cita1(i5,j5)=acos(c1); if (0.7071 <=cita1(i5,j5)<= 0.0174) re1(i5,j5)=1; elseif (1 <=cita1(i5,j5)<= 0.7193) re1(i5,j5)=2; elseif (0.7071 <=cita1(i5,j5)<= 1) re1(i5,j5)=3; elseif (0 <=cita1(i5,j5)<= 0.6946) re1(i5,j5)=4; end else % ------ 上下區隔 ------ a2=(i5.^2+86.^2).^(1/2); b2=(j5.^2+116.^2).^(1/2); ab2=(i5.*j5)+(86.*116); c2=ab2/a2*b2; cita2(i5,j5)=acos(c2); if (-0.7071 <=cita2(i5,j5)<= -0.0174) re1(i5,j5)=5; elseif (-1 <=cita2(i5,j5)<= -0.7193) re1(i5,j5)=6; elseif (-0.7071 <=cita2(i5,j5)<= -0.9998) re1(i5,j5)=7; elseif (0 <=cita2(i5,j5)<= -0.6946) re1(i5,j5)=8; end end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.214.206
Gwaewluin:用兩向量內積求夾角 12/08 19:31
geminicstar:不管原點不是在[0,0]也可以嗎 12/08 19:44
※ 編輯: geminicstar 來自: 118.170.214.206 (12/08 19:45)
evovss48:yes~ 向量只在乎大小方向 可寫個function 12/08 21:53
evovss48:theta=acosd(dot(A,B)/norm(A)/norm(B)); 12/08 21:54
evovss48:用雙for 第一個for的向量A=(元素-85) 第二的B=(元素-58) 12/08 21:58
evovss48:拍謝 應該是A=一for元素-(85,58) B=二for元素-(85,58) 12/08 22:07
jatj:把原點移到0不就好了... 12/09 15:00
geminicstar:matlab (0,0)在左上角~還是有方法可以做到? 12/09 19:18
alamabarry:平移 12/10 13:04
geminicstar:平移會出現負呢~ 12/10 20:09
alamabarry:那是你算的問題~~先拿支筆算算看 弄清楚演算法吧 12/11 00:14
geminicstar:不好意思!還是不太懂~可以跟我講比較詳細的描述嗎? 12/11 17:04