总结3d数组matlab

use*_*957 0 matlab

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
Run Code Online (Sandbox Code Playgroud)

无论i,j,k的最大值是多少,上面的代码总共打印为255.请解释

use*_*217 10

它打印出255,因为matlab没有溢出整数,数据类型是uint8

 a = repmat(uint8(100),5, 1)
 a(1)+a(2)
 a(1)+a(2)+a(3)
Run Code Online (Sandbox Code Playgroud)

输出将是200和255,因为Matlab将输出钳位在最大值,而不是环绕.如果你使用Dennis给出的sum函数,那么你会得到正确的值,因为Matlab会先转换为double

sum(a)
Run Code Online (Sandbox Code Playgroud)

应该给出500作为输出.