据我所知,〜运算符相当于!来自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
答案 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)