MATLAB 板


LINE

各位前輩賢拜好 小的想要把100*100的矩陣拆解成每個大小20*20的小矩陣 有試過了一小段code但發現跑出來的是對角線20*20的小矩陣 如果要跑出全部的小矩陣就得土法煉鋼的一段一段寫 想請教前輩有什麼好方法拆解矩陣 (原來試的code) A是原來100*100的矩陣 r=100 %列的數目 c=100 %行的數目 for i=1:20:r, for k=19 %一次加19 for n=(i+k), if n<=r && n<=c %n的值不超過行跟列的值 eval(sprintf('A%dv%d=A(i:i+%d,i:i+%d)',i,n,k,k)); else end; end; end; end --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.234.45
1F:推 linforce:A=rand(100,100); 03/10 22:56
2F:→ linforce:m=20;n=20; 03/10 22:56
3F:→ linforce:B=reshape(A,m,100*100/m)% B is m * 10000/m 03/10 22:56
4F:→ linforce:k=1:n:100*100/m 03/10 22:56
5F:→ linforce:for(times=1:length(k)-1) 03/10 22:56
6F:推 linforce: eval(sprintf('A%d=B(:, %d : %d );',times,k(times),k( 03/10 23:02
7F:→ linforce:times+1)-1)) end 03/10 23:03
感謝l大 這跑出來的小矩陣跟原來矩陣排列不一樣?? 我忘了說切出來的小矩陣裡面元素排列要跟原本的一樣 像是 [ 1 2 3 4 ] [ 1 2 ] [ 3 4 ] [ 9 10 ] [ 5 6 7 8 ] 切成 [ 5 6 ],[ 7 8 ],[13 14 ],.... [ 9 10 11 12 ] [ 13 14 15 16 ] 我剛剛參考I大試了把15*15的矩陣分成每個5*5小矩陣 我的想法是 因為reshape的B是從A裡面從上往下排 這樣每個小矩陣的第一行就是B的第1、16、31、 2、17、32 、3、18、33、 然後再把提B的第 1, 1+3 ,1+6 ,1+9 ,1+12 行 合成一個小矩陣 '' 16, 16+3 ,16+6 ,16+9 ,16+12 '' code如下 A=randint(15,15,[1 9]); %隨機15*15 裡面元素1~9的矩陣 m=5;n=5; B=reshape(A,m,[]) for i=1:1:3 for k=i:15:[(3-1)*15+i] eval(sprintf('Ai%dk%d=[B(:,%d) B(:,(%d+3)) B(:,(%d+6)) B(:,(%d+9)) B(:,(%d+12))];',i,k,k,k,k,k,k)) end; end; 圖:http://cl.ly/image/3d2b1X3Y0940/o 雖然可以做出來但很不高明 因為完全是土法煉鋼0.0 要是分的小矩陣一多就... 不知道有沒有通用的解法 感恩 ※ 編輯: ntme 來自: 140.114.234.45 (03/11 02:20)
8F:推 linforce:按照道理來說用了一個reshape 03/11 14:48
9F:→ linforce:就只需要用一個for loop才對啊,難道我搞錯了? 03/11 14:49
10F:推 linforce:把k向量的值或者times的值調整下應該就能得到你要的結果 03/11 14:55
剛剛調整了一下但沒有試成功(matlab新手0.0) 不過參考I大在其它篇關於矩陣合併的code又改了一下code 想法是把reshape的B裡面的第1、4、7、10....行都提出來令成新矩陣T 再把T的1~5,6~10,11~15的矩陣提出來 A=randint(15,15,[1 9]); m=5;n=5; B=reshape(A,m,[]) T=[] for i=1:3:15*15/5, eval(sprintf('T=[T B(:,%d)]',i)) end; for ii=1:5:15*15/5/3, eval(sprintf('T%d=T(:,%d:%d+4)',ii,ii,ii)) end; 圖:http://cl.ly/image/2Q1f3O2L1V39/o ※ 編輯: ntme 來自: 140.114.234.45 (03/11 15:52) 剛剛沒用reshape改用兩個for 好像成功惹?? A=randint(15,15,[1 9]); for i=1:5:15, for j=1:5:15 eval(sprintf('A%dv%d=A(%d:%d+4,%d:%d+4)',i,j,i,i,j,j)) end; end; % A6v11 代表A矩陣第(6,11)的元素開始分割出來的小矩陣 ※ 編輯: ntme 來自: 140.114.234.45 (03/11 16:25)
11F:→ ja20331:上面寫法我看不太懂,但是我會用cell來寫 04/11 03:55
12F:→ ja20331:A=reshape(1:100*100,100,100); 04/11 03:55
13F:→ ja20331:m=0; 04/11 03:55
14F:→ ja20331:for i=1:20:100, m=m+1; B{m}=A(i:i+19,:); end 04/11 03:56
15F:→ ja20331:A=cell(5,5); 04/11 03:56
16F:→ ja20331:for i=1:m, for j=1:m,A{i,j}=reshape(B{i}(1+(400*(j-1)) 04/11 03:58
17F:→ ja20331:A{i,j}=reshape(B{i}(1+(400*(j-1)):400*j),20,20); end 04/11 03:59
18F:→ ja20331:完整 A{i,j}要看下面那行,上面被切到, 最後要兩個end 04/11 04:02







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP