从向量获得的值的总和

时间:2012-01-22 18:33:29

标签: matlab

令Q为nx2向量,其包含n(2维)坐标。我想计算向量中所有整数i的i和i + 1坐标之间的距离,然后将其加起来。

我想出了以下内容:

syms d

symsum(sqrt(sum((Q(d,:)-Q(d+1,:).^2))),d,1,n-1);

但是,我收到以下错误:

??? Error using ==> sym.sym>notimplemented at 2653
Function 'subsindex' is not implemented for MuPAD symbolic objects.

Error in ==> sym.sym>sym.subsindex at 1359
            notimplemented('subsindex');

Error in ==> test4 at 4
symsum(sqrt(sum((Q(d,:)-Q(d+1,:).^2))),d,1,n-1);

或者我当然可以使用for循环,但我怀疑这可能不是最好和最快的解决方案。

2 个答案:

答案 0 :(得分:0)

我认为这是你实现syms变量的方式。您正在使用符号对象d来引用向量Q中的“第d个”元素(您的错误),然后使用(窃取)来自symsum的嵌入式循环来遍历向量。

此外,符号对象非常耗时。只需执行for / while循环就可以更轻松,更快捷。

GL

答案 1 :(得分:0)

如果我正确读取这个,你只需要在nx2矩阵中的点对之间的欧几里德距离。所以你要做的就是:

>> Q = rand(10,2)  %Define Q

Q =

    0.6557    0.7060
    0.0357    0.0318
    0.8491    0.2769
    0.9340    0.0462
    0.6787    0.0971
    0.7577    0.8235
    0.7431    0.6948
    0.3922    0.3171
    0.6555    0.9502
    0.1712    0.0344

>> distPairs =  sum(diff(Q,1,1).^2,2); %Distance between adjacent coordinates
>> totalDist = sum(distPairs)  %Sum all of the pairwise distances.

totalDist =

    4.0486