![](/img/trans.png)
[英]MATLAB: Multiplication of 3d array with 2d matrix and summing them by vectorization
[英]Summing 3d array 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
无论i,j,k的最大值是多少,上面的代码总输出为255。 请解释
它输出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会先将其转换为double值,然后您将获得正确的值
sum(a)
应该给500作为输出。
不知道您的代码片段是什么,但是如果您想对数组的绝对值求和,这确实很容易:
sum(abs(x(:)))
如果只希望子矩阵包含角落中的前两个值:
subM= x(1:2,1:2,1:2)
sum(abs(subM(:)))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.