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