作者swpat (swpat)
看板MATLAB
标题[问题]请问关於矩阵元素相加及运算
时间Wed Feb 26 07:26:41 2014
大家好,我是matlab新手,有些问题想请教各位高手
我要做的功能有把矩阵里面的元素都加起来
im=imread('d:\temp\lena512.bmp');
array=im;
x=0;
for i=1:512;
for j=1:512;
x=x+array(i,j);
end
end
我读一张lena的灰阶图,程式跑完 x=255 请问问题出在哪里?
用 sum(sum(array)) 对我来说不太适合,因为最後我要取的数值是
像棋盘格子状,一次都会跳过一格,加的是下一格。
还有如果我要取矩阵里的一个点的上下左右点相加,在边界上的点只取存在的点。
matlab有什麽比较好的方法可以用吗?
还请知道的大大能帮小弟解惑,感谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.41.249
1F:推 profyang:那你可以sum(sum(array(1:2:end,1:2:end))); 02/26 07:50
2F:推 profyang:或者你真的坚持...你可以先double(array); 02/26 07:57
3F:→ profyang:因为没记错的话 图像读出来是unit8 上限当然是255 02/26 07:58
4F:→ swpat:谢谢楼上大大回答,如果只能到255 那就没办法测overflow了.. 02/26 10:33
5F:→ swpat:还是有什麽较推荐的matlab参考书籍,谢谢 02/26 10:38
6F:推 profyang:我不是说了吗?@@ 先转成double就可以超过了阿 02/26 12:58
7F:→ profyang:而且你如果照我1F推那样用sum用得聪明一点 他就会自动把 02/26 12:58
8F:→ profyang:它转成double了 02/26 12:59
9F:→ swpat:谢谢大大不嫌麻烦的讲解!! 抱歉第一次没看懂大大的意思XD 02/26 17:23
10F:推 profyang:不会啦 不过你真的坚持用for吗?XD 很辛苦喔 02/26 20:00
11F:→ swpat:大大的解法真是简单且有效率 02/26 23:18
12F:→ swpat:A(1:2:end,:) % 取用奇数列资料 02/26 23:18
13F:→ swpat:A(:,1:2:end) % 取用奇数行资料 02/26 23:19
14F:→ swpat:所以sum(sum(array(1:2:end,1:2:end)));只取奇数列且其数行 02/26 23:20
15F:→ swpat:那我要偶数列且偶数行要怎麽写呢? 02/26 23:26
16F:推 profyang:array(2:2:end,2:2:end) 02/26 23:28
17F:→ swpat:谢谢大大讲解,那我要取奇数列且偶数行也都没问题了。 感恩 02/26 23:47