看板 MATLAB 關於我們 聯絡資訊
大家好,我是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
profyang:那你可以sum(sum(array(1:2:end,1:2:end))); 02/26 07:50
profyang:或者你真的堅持...你可以先double(array); 02/26 07:57
profyang:因為沒記錯的話 圖像讀出來是unit8 上限當然是255 02/26 07:58
swpat:謝謝樓上大大回答,如果只能到255 那就沒辦法測overflow了.. 02/26 10:33
swpat:還是有什麼較推薦的matlab參考書籍,謝謝 02/26 10:38
profyang:我不是說了嗎?@@ 先轉成double就可以超過了阿 02/26 12:58
profyang:而且你如果照我1F推那樣用sum用得聰明一點 他就會自動把 02/26 12:58
profyang:它轉成double了 02/26 12:59
swpat:謝謝大大不嫌麻煩的講解!! 抱歉第一次沒看懂大大的意思XD 02/26 17:23
profyang:不會啦 不過你真的堅持用for嗎?XD 很辛苦喔 02/26 20:00
swpat:大大的解法真是簡單且有效率 02/26 23:18
swpat:A(1:2:end,:) % 取用奇數列資料 02/26 23:18
swpat:A(:,1:2:end) % 取用奇數行資料 02/26 23:19
swpat:所以sum(sum(array(1:2:end,1:2:end)));只取奇數列且其數行 02/26 23:20
swpat:那我要偶數列且偶數行要怎麼寫呢? 02/26 23:26
profyang:array(2:2:end,2:2:end) 02/26 23:28
swpat:謝謝大大講解,那我要取奇數列且偶數行也都沒問題了。 感恩 02/26 23:47