我一直在处理 CT 图片的分割,并且在某个地方出现了这个公式:
A=A~=0
在我的情况下,A 是一个巨大的矩阵,其值从 0 到 255。如果我使用 A=A~=0,其中 A 是我的矩阵,我是否得到所有从 0 到 0(假)的值,其余的值为 1(真的)。那么这个公式是否说“值不等于 0?”。
还有一个问题,如果我之前写的是真的,是否可以把公式变成几个数字,例如“值不等于0,1,2,3,4,5,...,50 ?”
希望我的问题是可以理解的,并且有人可以帮助我。
谢谢!
~=
是“不等于”运算符。
因此,该表达式 A ~= 0
返回一个逻辑矩阵,其中 A(i,j) 为非零(并且在所有其他条目中为零),其中的条目为“1”。
结果被分配回 A 所以你得到一种掩码:如果 A 在这一点上具有非零值,则 A(i,j) == 1。
@nimrodm彻底回答了您的第一个问题,但是对于第二部分,您有两种不同的方法。如果您想排除指定间隔内的所有数字,[0, 50]
您可以使用
A = (A<0) | (A>50);
如果您正在检查某些特定值,例如,{0, 5, 11, 50}
您可以使用ismember
A = ~ismember(A, [0, 5, 11, 50]);
为了~=
你的理解是正确的,你会得到 0 代表 0 和 1 代表所有不等于 0。
关于你的第二个问题,有一个矩阵
B = [0:50]; % or whatever elements in it;
然后使用arrayfun
命令
A=arrayfun(@(x)(ismember(x,B)),A);
键入:help arrayfun
并help ismember
在命令窗口查看详细信息。
基本上,它使用匿名函数 搜索每个元素A
的存在。B