MATLAB变量在运算中饱和

时间:2013-04-19 04:32:04

标签: matlab add

我在 MATLAB 中编写了以下代码。在循环之后,当我知道它的值应该超过这个时,dSumH总是在255处饱和。但是,当我用任意值替换d时,它不会饱和。有什么线索可以解决它吗?

dTh = 127;
dSumH = zeros(w,1);

for(c = 1:w)

    for(r = 2:h)

        d = abs(img(r,c) - img(r-1,c));
        if(d >= dTh)
            dSumH(c) = dSumH(c) + d;
        end

    end

end
dSumH
figure, plot([1:w],dSumH);

1 个答案:

答案 0 :(得分:1)

好的,我明白了。变量d的类别为uint8,因此加法运算也隐式将dSumH定义为uint8。通过将d = abs(img(r,c) - img(r-1,c));更改为d = double(abs(img(r,c) - img(r-1,c)));,它可以按预期工作。