2012-01-22 86 views
0

設Q是包含n(2維)座標的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

如果我正確讀取這個,你只需要你的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 
0

我認爲這是你實施syms變量的方式。您正在使用符號對象d來引用向量Q(您的錯誤)中的「第d個」元素,然後使用(竊取)來自symsum的嵌入循環來遍歷向量。

此外,符號對象也很耗時。只要做for/while循環,它會更容易和更快。

gl。