右阵列分区:忽略除零

时间:2014-02-03 16:45:05

标签: matlab

我有两个类似维度的数据矩阵AB。我打算将A的每个元素除以B的相应元素。为此,matlab提供了C = A./B的快捷方式。但是,B有许多零元素,对于此类元素,我希望C的元素为零而不是NAN。 MATLAB是否提供了一种有效的方法?我可以在一个循环中这样做,但这将是非常昂贵的。 谢谢。

1 个答案:

答案 0 :(得分:3)

是。您可以使用逻辑索引:

C = zeros(size(A));
t = logical(B);
C(t) = A(t)./B(t);

使用逻辑索引,只会评估与A的{​​{1}}元素对应的BCtrue元素。 t仅在t非零的情况下为true。请注意,B已预先初始化为零,以自动处理未评估的案例,因为C为零。