[問題]請問關於矩陣元素相加及運算

看板MATLAB作者 (swpat)時間11年前 (2014/02/26 07:26), 編輯推噓5(5012)
留言17則, 2人參與, 最新討論串1/1
大家好,我是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

02/26 07:50, , 1F
那你可以sum(sum(array(1:2:end,1:2:end)));
02/26 07:50, 1F

02/26 07:57, , 2F
或者你真的堅持...你可以先double(array);
02/26 07:57, 2F

02/26 07:58, , 3F
因為沒記錯的話 圖像讀出來是unit8 上限當然是255
02/26 07:58, 3F

02/26 10:33, , 4F
謝謝樓上大大回答,如果只能到255 那就沒辦法測overflow了..
02/26 10:33, 4F

02/26 10:38, , 5F
還是有什麼較推薦的matlab參考書籍,謝謝
02/26 10:38, 5F

02/26 12:58, , 6F
我不是說了嗎?@@ 先轉成double就可以超過了阿
02/26 12:58, 6F

02/26 12:58, , 7F
而且你如果照我1F推那樣用sum用得聰明一點 他就會自動把
02/26 12:58, 7F

02/26 12:59, , 8F
它轉成double了
02/26 12:59, 8F

02/26 17:23, , 9F
謝謝大大不嫌麻煩的講解!! 抱歉第一次沒看懂大大的意思XD
02/26 17:23, 9F

02/26 20:00, , 10F
不會啦 不過你真的堅持用for嗎?XD 很辛苦喔
02/26 20:00, 10F

02/26 23:18, , 11F
大大的解法真是簡單且有效率
02/26 23:18, 11F

02/26 23:18, , 12F
A(1:2:end,:) % 取用奇數列資料
02/26 23:18, 12F

02/26 23:19, , 13F
A(:,1:2:end) % 取用奇數行資料
02/26 23:19, 13F

02/26 23:20, , 14F
所以sum(sum(array(1:2:end,1:2:end)));只取奇數列且其數行
02/26 23:20, 14F

02/26 23:26, , 15F
那我要偶數列且偶數行要怎麼寫呢?
02/26 23:26, 15F

02/26 23:28, , 16F
array(2:2:end,2:2:end)
02/26 23:28, 16F

02/26 23:47, , 17F
謝謝大大講解,那我要取奇數列且偶數行也都沒問題了。 感恩
02/26 23:47, 17F
文章代碼(AID): #1J3IQq59 (MATLAB)
文章代碼(AID): #1J3IQq59 (MATLAB)