【问题标题】:Pairwise Angle Calculation of Complex Vector复向量的成对角度计算
【发布时间】:2019-09-17 10:12:48
【问题描述】:

我有一个复向量(cv)如下:

743.000000000000 + 1150.00000000000i
744.000000000000 + 1147.00000000000i
745.000000000000 + 1146.00000000000i
746.000000000000 + 1144.00000000000i
748.000000000000 + 1145.00000000000i
751.000000000000 + 1145.00000000000i
756.000000000000 + 1145.00000000000i
760.000000000000 + 1144.00000000000i
765.000000000000 + 1144.00000000000i
769.000000000000 + 1143.00000000000i
773.000000000000 + 1142.00000000000i
776.000000000000 + 1142.00000000000i
778.000000000000 + 1142.00000000000i
780.000000000000 + 1141.00000000000i
781.000000000000 + 1141.00000000000i

这些是绘制在 2D 空间中的 XY 坐标,我想计算向量中每个连续元素之间的成对角度,例如元素 1 和元素 2 之间、元素 2 和元素 3 之间的角度等。我尝试用 atan2(imag(cv),real(cv)) 和角度(cv) 计算它,但是我获得的弧度值不看起来是正确的,因为它们应该更接近 1.57/90 度:

0.997176848026074
0.995371676259612
0.994359765918558
0.992947720321641
0.992122189213936
0.990288012755825
0.987240833611188
0.984409230727208
0.981383002699897
0.978565844271060
0.975754418763486
0.973955062297999
0.972757930118131
0.971154674293130
0.970557623825132

如何最好地计算这些坐标之间的成对角度?

非常感谢您!

【问题讨论】:

  • 无论如何,您的结果中都会出现1-1.57/90
  • 与@Stewie Griffin 的答案非常相似,但您也可以使用:ang = atand(diff(imag(cv))./diff(real(cv)))

标签: matlab geometry trigonometry complex-numbers


【解决方案1】:

根据您的描述,您需要第 1 行和第 2 行、第 2 行和第 3 行之间的角度等等。为此,您可以计算每行之间的差异(diff),然后使用angle 获取每个元素之间的角度:

cv_diff = diff(cv);
cv_diff_angle = angle(cv_diff)*180/pi
cv_diff_angle =

  -71.56505
  -45.00000
  -63.43495
   26.56505
    0.00000
    0.00000
  -14.03624
    0.00000
  -14.03624
  -14.03624
    0.00000
    0.00000
  -26.56505
    0.00000

根据数据的散点图手动检查这一点,这似乎是正确的。请注意,我乘以 180/pi 得到以度为单位的角度。

【讨论】:

  • 完美!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多