Matlab运算符〜

时间:2018-03-22 08:10:24

标签: matlab

据我所知,〜运算符相当于!来自C的操作员。所以我在if条件下理解它。但是我不明白操作员在这里做了什么。

function [y] = m_binary (x, pm)
y=x;
for i=1:length(x)
   r= unifrnd(0,1);
   if r<pm
      y(i)=~x(i);
   end;
end;
end

1 个答案:

答案 0 :(得分:-1)

MATLAB中的~运算符实际上与C中的~运算符非常相似,而不是!运算符。在C ~中是二元的补码运算符(参见here),它具有翻转位的作用。它通常被称为逻辑非运算符,它是MATLAB docs描述它的方式。在MATLAB中,它不是翻转位,而是对向量执行逐元素否定。

在您的情况下,它只会翻转i的{​​{1}}元素,假设x是逻辑向量。但是,如果x不合逻辑,那么使用MATLAB的一些注意事项,x只会找到~ x的所有元素。例如,0返回~[0 0 1 0 2],因此在MATLAB中[1 1 0 1 0]将是~3,而在CI中会猜测它会返回一个整数(如果三是00000011则猜测为~~ 3将是11111100,因此0可能会返回~3单位8)