1

我一直在处理 CT 图片的分割,并且在某个地方出现了这个公式:

A=A~=0

在我的情况下,A 是一个巨大的矩阵,其值从 0 到 255。如果我使用 A=A~=0,其中 A 是我的矩阵,我是否得到所有从 0 到 0(假)的值,其余的值为 1(真的)。那么这个公式是否说“值不等于 0?”。

还有一个问题,如果我之前写的是真的,是否可以把公式变成几个数字,例如“值不等于0,1,2,3,4,5,...,50 ?”

希望我的问题是可以理解的,并且有人可以帮助我。

谢谢!

4

3 回答 3

3

~=是“不等于”运算符。

因此,该表达式 A ~= 0返回一个逻辑矩阵,其中 A(i,j) 为非零(并且在所有其他条目中为零),其中的条目为“1”。

结果被分配回 A 所以你得到一种掩码:如果 A 在这一点上具有非零值,则 A(i,j) == 1。

于 2013-10-08T18:08:17.670 回答
2

@nimrodm彻底回答了您的第一个问题,但是对于第二部分,您有两种不同的方法。如果您想排除指定间隔内的所有数字,[0, 50]您可以使用

A = (A<0) | (A>50);

如果您正在检查某些特定值,例如,{0, 5, 11, 50}您可以使用ismember

A = ~ismember(A, [0, 5, 11, 50]);
于 2013-10-08T19:19:20.763 回答
0

为了~=你的理解是正确的,你会得到 0 代表 0 和 1 代表所有不等于 0。

关于你的第二个问题,有一个矩阵

B = [0:50]; % or whatever elements in it;

然后使用arrayfun命令

A=arrayfun(@(x)(ismember(x,B)),A);

键入:help arrayfunhelp ismember在命令窗口查看详细信息。

基本上,它使用匿名函数 搜索每个元素A的存在。B

于 2013-10-08T18:59:39.543 回答