24小时热门版块排行榜    

查看: 756  |  回复: 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的回帖

百里道

木虫 (初入文坛)

引用回帖:
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的回帖
查看全部 7 个回答

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的回帖
信息提示
请填处理意见