作者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