我是Matlab新手。矢量作爲MATLAB函數的輸出
我在做擴展卡爾曼濾波器模擬,它需要計算給定函數的雅可比矩陣(部分微分函數)。我使用的函數來獲取的雅可比行列式的值:
function [H] = jacobH(x1,x2)
H = [ -(2*x1(1,:,:) - 2*x2(1,:,:))/(8*pi*((x1(1,:,:) - x2(1,:,:))^2 + (x1(3,:,:) - x2(3,:,:))^2)^(3/2)), 0,
-(2*x1(3,:,:) - 2*x2(3,:,:))/(8*pi*((x1(1,:,:) - x2(1,:,:))^2 + (x1(3,:,:) - x2(3,:,:))^2)^(3/2)), 0];
end
雅可比基本上differenciates 1 /(4 * PI * SQRT((X1-X2)^ 2 +(Y1-Y2)^ 2))WRT X ,y
例如,如果我通過jacobH(x1(:1,1),x2(:,1,1)),那麼我應該得到H作爲一個1x4矩陣[value1,0,value2,0 ]。對於不同的輸入,value1和value2會有所不同。
但我得到的只有一個值。我不知道我錯在哪裏。
我搜索了類似的問題,但沒有一個與我的問題有關。
另外,有沒有更有效的方法來做到這一點?
任何幫助表示讚賞!
是你應該寫自己的功能?因爲如果你有象徵性的工具箱,你可以使用內置函數'jacobian',它給你一個很好的符號表達式(如果你願意的話,你當然可以把它轉換成數字形式)。 – 2015-02-08 07:36:10
你的意思是說你將H作爲單個值而不是1x4矩陣? – articuno 2015-02-08 07:42:49
@WouterKuijsters謝謝你的建議。我會嘗試。 – navneetr2008 2015-02-08 08:49:16