根据Matlab中另一列的值更改列的一个值

时间:2013-05-13 13:01:05

标签: arrays matlab

我在matlab中有两个数组(小部分如下所示):

    A     B
   2     3
   0,1   3,6
   0,1   3,6
   0,1   3,6
   0,1   3,2
   0     3,2
   0     3,2
   0     3,2
   0     2,4
   0     4,3
   0,1   4,3
   0,1   4,3
   0,1   4,3
   0,1   4,3
   0,1   4,3

我想做什么:如果A列中的值为零,则B列中的值应更改为零或NaN。

对此我感谢任何帮助! 我是matlab的新手,我不确定是否可以/应该使用'for-end'循环?

谢谢! :)

1 个答案:

答案 0 :(得分:4)

您可以使用logical indexing

B(A == 0) = 0;

表达式A == 0返回一个逻辑数组(布尔值),包含" 1" s在与A中的零元素对应的位置。将此布尔数组输入B,仅在" 1" s的位置选择B中的元素。零分配是不言自明的。

但是,当A包含十进制值时,Rody正确地指出比较操作可能不准确并返回false结果。因此,您应该设置容差(例如 eps的倍数),如下所示:

tol = eps;           %// Tolerance
B(abs(A) < tol) = 0;

如果您不关心浮点不准确,并且A不包含NaN值或复数,您可以使用以下缩写语法:

B(~A) = 0;