Re: [問題] 請問如何使用矩陣取代這個迴圈
: M1=reshape(repmat(M(:)',2,1),size(M,1)*2,size(M,2))';
: M2=reshape(repmat(M1(:)',2,1),size(M1,1)*2,size(M1,2));
: M2([1 end],:)=[];
: M2(:,[1 end])=[];
: a=reshape(sum(reshape(M2(:,[1:2:end,2:2:end]),[],2),2),2,[])
: 基本的技巧是把重複的部份先使用repmat擴張處理
: 然後reshape成全部小矩陣疊在一起的樣子
: 最後再使用sum完成相加後
: 重新reshape成輸出的樣子即可
萬分感謝這個好方法 速度增加了不少
只是請問要是M矩陣變成1024*1024
要相加的小矩陣變成17*17
這樣2G的記憶體好像還不夠吃@@
我有用uint16做處理了
r=17
[M,x]=hist(A,x);
M=uint16(M);
M1=reshape(repmat(M(:)',r,1),size(M,1)*r,size(M,2))';
M1=reshape(repmat(M1(:)',r,1),size(M1,1)*r,size(M1,2));
M1([1 end],:)=[];
M1(:,[1 end])=[];
a=reshape(sum(reshape(M1(:,[1:2:end,2:2:end]),[],2),2),2,[]);
但是a好像會變成超級大
吃下M1之後就吃不下a了
請問對大矩陣有解決的方法嗎?
再次感謝
--
我有想到可以切成4塊啦
只是這樣運算時間會多一些
記憶體真的是怪物...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.206.33
※ 編輯: CDavid 來自: 140.115.206.33 (05/10 15:41)
推
05/10 15:48, , 1F
05/10 15:48, 1F
→
05/10 15:49, , 2F
05/10 15:49, 2F
→
05/10 15:50, , 3F
05/10 15:50, 3F
推
05/10 19:20, , 4F
05/10 19:20, 4F
→
05/10 19:20, , 5F
05/10 19:20, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章