矢量作为matlab函数的输出

时间:2015-02-08 06:21:19

标签: matlab vector kalman-filter

我是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

Jacobian基本上区分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因不同的输入而异。

但我只得到一个价值。我不知道我哪里出错了。

我搜索了类似的问题,但没有一个与我的问题相关。

此外,有更有效的方法吗?

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

使用您的功能,我在尝试时获得了正确的行为:

x1 = ones(3,3,3);
x2 = ones(3,3,3);    
jacobH(x1(:,1,1), x2(:,1,1))

ans =

   NaN     0   NaN     0