繁体   English   中英

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

[英]Change one value of column based on value of another column in 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”循环?

谢谢! :)

您可以使用逻辑索引

B(A == 0) = 0;

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

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

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

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

B(~A) = 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM