基于另一个矩阵操作一个矩阵

Manipulate a matrix based on another matrix

我有一个变量 est,它是 20x1 double,像这样:

12
15
68
85
0
25
3
...

和变量 k 也是 20x1 double,由 012 组成,像这样:

1
2
0
1
0
0
2
...

我想更改 est,以便如果 k(i) 不是 0,则应删除 est(i),其中 i=1:20。有人可以帮忙吗?

"blank" 是指 0 吗?

est(k(:,1)~=0, 1) = 0;

这段代码在做什么?

k(:,1)~=0 returns 一个 20 x 1 逻辑数组,在 k 的第一列非零的行处为真。然后,代码沿着第 1 列在 est 中寻址这些行,并将值设置为零。

这里是使用 For 循环语句的解决方案。让我知道这是否符合您的要求:

idxList = [];
for ii = 1:size(est,1)
    if k(ii,1) == 0
        idxList = [idxList ii];
    end
end
est(idxList) = [];

该代码为它在变量 k 中找到的全零创建了一个索引列表。之后,它从变量 est 中删除与索引列表 idxList.

中的值对应的所有值