作业帮 > 综合 > 作业

matlab中函数句柄应用问题?

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/28 09:25:10
matlab中函数句柄应用问题?
F=@(x)[x(1)+t*x(3)+0.5*t^2*x(5);x(2)+t*x(4)+0.5*t^2*x(6);...
x(3)+t*x(5);x(4)+t*x(6);x(5);x(6)];
H=@(x)[sqrt(x(1)^2+x(2)^2);atan(x(2)/x(1))];
Xk=zeros(6,50);
Xk_predict=@(x)F*XO;
Pk_predict=@(x)F*PO*F'+Q;%预测误差协方差阵
S=@(x)H*Pk_predict*H'+R;%信息协方差阵 K=@(x)Pk_predict*H'*inv(S);%增益矩阵
xxx=(@(x)Xk_predict+K*(Z(:,Node_Num(b))-H*Xk_predict));%估计矩阵(最后的输出值)
Xk(:,k)=xxx;
运行后会显示
Conversion to double from function_handle is not possible.
Error in ==> kalmanquxian at 102
Xk(:,k)=xxx;
matlab中函数句柄应用问题?
是啊 您把函数句柄赋值给一个矩阵,显然不对的啊.您的意图是什么?
再问: 就是为了把xxx的值给Xk,可是我前面都用了句柄,因为方程式是非线性的,不用句柄我也不会解呢?要是不用句柄也不行啊?
再答: 函数句柄可以认为是一个函数,而绝对不是数据
函数通过对输入参数进行计算,可以得到结果数据。例如 f = @(x)(...); Y = f(X); 那么Y就是一个数据,可以赋值给矩阵了。至于方程具体如何,跟这个问题无关。至少,标准的卡尔曼滤波全是线性运算。

再问: 我就是想用标准kalman做个非线性的,但是就是在这个地方出现问题了?你也是这个方向?知道怎么办吗? 可不可以留个QQ啊,具体问一下你?
再答: 对于非线性情形,要用Unscented Kalman Filter,或者Extended Kalman Filter(原理简单,效果差些)。自己去查资料好了。
再问: 我改了一下标准kalman,但是有问题,我不知道该怎么弄,所以想让你给看下,帮下忙?
再答: 从未听说过“改一下标准kalman”的说法。如果你不是对非线性模型求导数使之局部线性化的话,我就不必看了。