令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循环,但我怀疑这可能不是最好和最快的解决方案。
答案 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