[問題] 矩陣運算的問題已回收

看板MATLAB作者 (每天保持微笑)時間17年前 (2008/11/27 15:04), 編輯推噓4(409)
留言13則, 3人參與, 最新討論串1/2 (看更多)
請問我有一個矩陣,假設如下: a01 a02 a03 a04 a05 a06 a07 a08 a09 a10 a11 a12 我想要得到一個新的矩陣比方說: a01新值是a01+a02+a05+a06(邊界問題) a06新值是a01+a02+a03+a05+a06+a07+a09+a10+a11 以此類推...也就是說每一格的新值是附近的值相加 我使用for迴圈去寫,但遇到邊界的問題...這該怎麼解決呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.104.100 ※ 編輯: bxorw 來自: 140.123.104.100 (11/27 15:05)

11/27 18:18, , 1F
可以在矩陣最外層多加一層0包起來..這樣就不怕了..XD..Y
11/27 18:18, 1F

11/27 21:43, , 2F
可以詢問樓上怎麼在陣列外包0呢?
11/27 21:43, 2F

11/27 21:56, , 3F
提供一個方法,建一個b=[0 0 0; 0 1 0 ; 0 0 0]; 然後
11/27 21:56, 3F

11/27 21:57, , 4F
conv2(a,b); 就可以了(假設a是你的矩陣)
11/27 21:57, 4F

11/27 22:00, , 5F
但你這個情況其實不用for,直接建 b=ones(3); 然後
11/27 22:00, 5F

11/27 22:00, , 6F
conv2(a,b); 出來的結果外圍不要取就是你要的了0.0
11/27 22:00, 6F

11/27 22:22, , 7F
我的陣列為256*256,這樣作的話,好像有點lag。。感覺
11/27 22:22, 7F

11/27 22:27, , 8F
我跑一次才0.0018秒耶,會很久嗎@@
11/27 22:27, 8F

11/27 22:28, , 9F
要不然,你可以先建一個b=zeros(258); 然後把a填進去:
11/27 22:28, 9F

11/27 22:29, , 10F
b(2:end-1,2:end-1)=a 這樣也可以,會比較快我試過了
11/27 22:29, 10F

11/27 22:32, , 11F
感謝你...其實我有在try你的方法,只是想不怎麼把a放到b = =
11/27 22:32, 11F

11/27 22:32, , 12F
感謝你<_ _>
11/27 22:32, 12F

11/27 22:33, , 13F
:)
11/27 22:33, 13F
文章代碼(AID): #19BaPaCv (MATLAB)
文章代碼(AID): #19BaPaCv (MATLAB)