x=imread('test.jpg');
imshow(x);
total = 0;
for i=1:2
for j=1:2
for k=1:2
total = total + abs(x(i,j,k));
end
end
end
total
无论i,j,k的最大值是多少,上面的代码都会打印总数为255。请解释
答案 0 :(得分:10)
它输出255,因为matlab没有溢出整数,数据类型是uint8
a = repmat(uint8(100),5, 1)
a(1)+a(2)
a(1)+a(2)+a(3)
输出将为200和255,因为Matlab将输出钳位在最大值,而不是环绕。如果你使用Dennis给出的sum函数,那么当Matlab转换为双重
时,你得到正确的值sum(a)
应该输出500作为输出。
答案 1 :(得分:3)
不确定您的代码片段是什么,但是如果您想要对数组的绝对值求和,那么这很容易:
sum(abs(x(:)))
如果您只想要包含角落中前两个值的子矩阵:
subM= x(1:2,1:2,1:2)
sum(abs(subM(:)))