matlab 如何找矩阵中的非零元素并替换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 如何找矩阵中的非零元素并替换相关的知识,希望对你有一定的参考价值。
如,矩阵[1 0 0 0 1;1 0 0 1 0];要将其中的1元素按顺序替换为[2 4;3 5]
A = [1 0 0 0 1;1 0 0 1 0];b = [2 4; 3 5];
ia = find(A(:)~=0);
A(ia)=b(:)
A =
2 0 0 0 5
3 0 0 4 0
%% 如果要对应行优先
A = [1 0 0 0 1;1 0 0 1 0]';b = [2 4; 3 5]';
ia = find(A(:)~=0);
A(ia)=b(:);
A = A'
A =
2 0 0 0 4
3 0 0 5 0
参考技术A 设数组为a,a(find(a==0))=w,w就是你想替换的数。如果想替换的数是不相同的,那就用c=find(a==0),这个时候数组c里就存放了等于0的下标,你就可以进行赋值替换了,如:a(c(1))=1+i。 参考技术B temp=find(A~=0);for i=1:1:length(temp)
A(temp(i))=你想要替换的值;
end
无迹卡尔曼滤波器协方差矩阵 P 中的非零元素
【中文标题】无迹卡尔曼滤波器协方差矩阵 P 中的非零元素【英文标题】:non-zero elements in the covariance matrix P of unscented kalman filter 【发布时间】:2021-05-10 18:06:00 【问题描述】:我正在使用 filterpy.kalman 库的 unscented kalman 过滤器类。 即使当我用非对角线条目都为零的情况下初始化过程噪声 Q 和初始协方差 P 时,我仍然会得到具有非零非对角线条目的 P 和 S,有没有办法确保 P和 S 的非对角项都等于 0?
【问题讨论】:
【参考方案1】:我怀疑您可能会在其他地方得到更好的答案,但我不确定在哪里。
只有在状态实际上是没有动态的独立一维状态的集合的情况下,您才能确保对角状态误差协方差矩阵(即在时间 t' 的状态的预测是在时间 t 的状态)并且没有任何测量涉及超过一个状态元素。
卡尔曼滤波器的本质是它估计状态误差之间的相关性。
【讨论】:
以上是关于matlab 如何找矩阵中的非零元素并替换的主要内容,如果未能解决你的问题,请参考以下文章
在MATLAB中,如何找出矩阵的非零元素。并且输出它所在的行和列。只要非零就为真。输出1。。