function complexity2imgloop_90(filename)
j=imread(filename);
m=max(j(:))
x=m-1
u=-x
当我运行上面的代码时,' x'结果正确地在255,但' u'结果为零。无论我做什么,我都无法得到“你”。消极的' x'。这仅在使用图像而不是矩阵作为输入时发生。
答案 0 :(得分:1)
这是因为j
是最有可能属于无符号的数据类型的图片。这意味着不支持负值并将其截断为零。如果您需要负数支持,请将变量强制转换为可以处理此类型的受支持类型...例如double
或int8
。但是,我假设你想将它用于浮点应用程序,所以double
应该没问题:
function complexity2imgloop_90(filename)
j=imread(filename);
j = double(j); %// Change here
m=max(j(:));
x=m-1;
u=-x;
....
使用i
和j
作为变量是非常糟糕的做法。这些是为复杂变量 i = sqrt(-1);, j = sqrt(-1);
保留的。建议不要使用隐藏i
或j
,因为这会使创建复杂数字变得更加困难。您基本上必须键入sqrt(-1)
以促进相同的行为。这样做还有其他缺点。
有关详细信息,请Shai Bagon查看此Stack Overflow帖子:Using i and j as variables in Matlab
答案 1 :(得分:1)