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