【问题标题】:Calculating the magnitude of a column containing vectors计算包含向量的列的大小
【发布时间】:2015-03-24 01:18:14
【问题描述】:

我有一列用于存储物理向量,比如力或速度,格式如下:

[0 0]
[-0.011661058152260357 0.00372367132268286]

我希望插入一个新列,其中该向量的大小。计算很简单:sqrt(x^2 + y^2),其中x 是第一个数字,y 是第二个数字。 问题是如何阅读和计算。

我怎样才能在ExcelRMatlab 以任何方式实现这一点?

【问题讨论】:

  • 向量的这些数字 x 和 y 是否锚定在 0,0?如果是这样,请使用良好的旧毕达哥拉斯定理。否则,您必须提供更多信息,例如这些数字存储在哪种数据结构中以及它们代表什么。
  • @Bryan Hanson 请检查编辑。

标签: r excel matlab excel-formula


【解决方案1】:

在 Excel 中:

=SQRT(MID(A1,2,FIND(" ",A1)-1)^2+(MID(A1,FIND(" ",A1),FIND("]",A1)-FIND(" ",A1)-1)^2))

【讨论】:

    【解决方案2】:

    如果这些数字存储在R 的数据框中,那么您可以简单地将幅度放在一个新列中:

    df <- data.frame(x = rnorm(5), y = rnorm(5)) # fake data
    df$mag <- sqrt(df$x^2 + df$y^2)
    

    给出:

               x          y       mag
    1 -0.1027138  0.8126019 0.8190678
    2  2.4021159 -0.1336111 2.4058289
    3 -1.7490194  0.8151816 1.9296605
    4  0.4898490  1.2700167 1.3612106
    5 -1.6132449  2.2485643 2.7674176
    

    【讨论】:

    • 问题在于 x 和 y 的存储方式。
    • 存储在 .csv 文件中,其中提到的列包含值为 [x y]。所以像 a,b,c......,[x y],......g,h。示例:0.5,639,false,5,-1,0,0,0,[0 0]
    • 在这种情况下,如果它们用空格分隔,请使用 df &lt;- read.csv("file_name.csv", sep = " ") 读取它们。我不相信有一种“即时”的方式来放下牙套。您必须编辑这些数据或将原始来源的数据重新保存为不同的格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多