我在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'循环?
谢谢! :)
答案 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;