2013-05-09 108 views
0
for j=1:length(idf) 
    dx = xf(1,j)- xv(1); 
    dy = xf(2,j)- xv(2); 
    d2 = dx^2 + dy^2; 
    d = sqrt(d2); 
    Z_est(:,j) = [d;atan2(dy,dx)-xv(3)]; 
    S(:,:,j) = Hf(:,:,j) * pf(:,:,j) * Hf(:,:,j)' + R 
end  

    v = zf - Z_est; %innovation 
    v(2,:) = pi_to_pi(v(2,:)); 
    w= 1; 
for n = 1:size(zf,2) 
    den = 2*pi*sqrt(det(S)); 
    neu = exp(-0.5 * v(:,n)' * inv(S) * v(:,n)); 
    w = w*(neu/den); 
end 

我的程序是根據粒子濾波計算我的狀態粒子的權重,在開始運行時計算W, BT之後它顯示錯誤??? Undefined function or method 'det' for input arguments of type 'double' and attributes 'full 3d real''。 我不知道這個問題。???未定義的函數或方法'det'用於輸入參數類型'double'和屬性'full 3d real

回答

0

您需要給det一個方形矩陣而不是一個3d矩陣(S是一個3d數組)。 我假設你的意思是不是寫:

den = 2*pi*sqrt(det(S(:,:,n)); 

因此,在給定的循環迭代S的切片的det被計算。

+0

Thnakx ...它解決了我上面的錯誤:),但因爲我的其他矩陣得到高維度和顯示錯誤。感謝的方式... :) – manu 2013-05-10 10:31:05

相關問題