A = A~ = 0做什么,如何指定?

时间:2013-10-08 18:03:46

标签: matlab matrix

我一直在处理CT-Picture的细分,并且在某个地方遇到了这个公式:

A = A〜= 0

在我的例子中是一个巨大的矩阵,其值从0到255.如果我使用A = A~ = 0,其中A是我的矩阵,我是否得到0到0(false)的所有值,其余的到1(真)。那么这个公式也会说“价值不等于0?”。

另一个问题,如果我之前写的是真的,将公式变成几个数字是可行的,例如“值是否等于0,1,2,3,4,5,... 。,50?“

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

谢谢!

3 个答案:

答案 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 arrayfunhelp ismember以获取详细信息。

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

相关问题