24小时热门版块排行榜    

查看: 754  |  回复: 6

百里道

木虫 (初入文坛)

[求助] 矩阵输出

类似于下面
a=[1,2;3,4]
b=[5,6;7,8]
c=[9,10;11,12]
d=[13,14;15,16]
for k=1:4
A=[a(k),b(k);c(k),d(k)]
end
会输出四个2*2的矩阵,
但是现在我知道的是9个11*21的矩阵,我想要得到的是11*21=231个3*3的矩阵,请问怎么做?而且231个矩阵我想按同一个字母加下标(两个下标)来表示?请问怎么做?
回复此楼
==
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
百里道: 金币+10, ★★★很有帮助 2013-08-22 11:00:11
csgt0: 金币+1, 谢谢 2013-08-22 15:46:03
这个不难,运行下面的程序,你会得到 231个独立命名的矩阵,
前缀为 sublock, 后面第一个数字是 坐标 x, 第二个数字是 坐标 y
祝好运!
==========================================
clear; clc

B = rand(11*3, 21*3) ;

for i = 1:11
    for j = 1:21
        t = B((i-1)*3+1:i*3, (j-1)*3+1:j*3);
        eval(['subloc_' num2str(i) '_' num2str(j) '= t;'])
    end
end
2楼2013-08-21 19:15:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

先谢谢你,按照你说的只是将大矩阵分块,
我前面提到的
a=[1,2;3,4]; b=[5,6;7,8];c=[9,10;11,12];d=[13,14;15,16];B=[a,b;c,d];
for i = 1:2
   for j = 1:2
      t = B((i-1)*2+1:i*2, (j-1)*2+1:j*2);
      eval(['subloc_' num2str(i) '_' num2str(j) '= t;'])
   end
end
得到结果是subloc_1_1=a,subloc_1_2=b,subloc_2_1=c,subloc_2_2=d,这不是所需要的
想得到的结果应该是subloc1_1=[1,5;9,13],类似这样的结果,请问该怎么改?
==
3楼2013-08-22 10:49:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

问题已解决,谢谢你!
==
4楼2013-08-22 10:59:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

引用回帖:
2楼: Originally posted by alorsmail at 2013-08-21 19:15:20
这个不难,运行下面的程序,你会得到 231个独立命名的矩阵,
前缀为 sublock, 后面第一个数字是 坐标 x, 第二个数字是 坐标 y
祝好运!
==========================================
clear; clc

B = rand(11 ...

想请问你,对于231个三阶矩阵
按你所说,单个调用时可以用subloc_6_6,但是231个矩阵都需要下一步运算时,不能用subloc_(1:11)_(1:21)或者
for i=1:11
   for j=1:21
         subloc_(i)_(j)-A_(i)_(j)
   end
end
方式来调用,可以怎么调用呢?
==
5楼2013-08-24 10:50:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)


csgt0: 金币+1, 谢谢 2013-08-26 13:44:46
引用回帖:
5楼: Originally posted by 百里道 at 2013-08-24 10:50:13
想请问你,对于231个三阶矩阵
按你所说,单个调用时可以用subloc_6_6,但是231个矩阵都需要下一步运算时,不能用subloc_(1:11)_(1:21)或者
for i=1:11
   for j=1:21
         subloc_(i)_(j)-A_(i)_(j)
   en ...

我以为你只是想得到这些矩阵
好吧,如果想调用方便,那么可以用如下程序 :
==========================================
clear; clc
B = rand(11*3, 21*3) ;
for i = 1:11
     for j = 1:21
         t = B((i-1)*3+1:i*3, (j-1)*3+1:j*3);
         sublock{i,j} = t;
     end
end
==========================================
也就是说, sublock 的每一个元素,都是一个 3*3 的矩阵
调用的时候就是 x =  sublock{i,j}; 就可以了
6楼2013-08-24 14:37:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

百里道

木虫 (初入文坛)

引用回帖:
6楼: Originally posted by alorsmail at 2013-08-24 14:37:34
我以为你只是想得到这些矩阵
好吧,如果想调用方便,那么可以用如下程序 :
==========================================
clear; clc
B = rand(11*3, 21*3) ;
for i = 1:11
     for j = 1:21
          ...

十分感谢!
==
7楼2013-08-24 15:50:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 百里道 的主题更新
信息提示
请填处理意见