如何在Matlab中从矩阵(块)和数字(重复次数)创建块矩阵?

时间:2014-10-01 16:29:19

标签: matlab matrix block

Matlab语法问题:

  

给定一些nxd矩阵A(比如[1 2 3; 4 5 6])和数字k(比如说2),如何创建一个A矩阵出现k次的块矩阵([1 2 3 0 0 0 ; 4 5 6 0 0 0; 0 0 0 1 2 3; 0 0 0 4 5 6]在我的例子中)?

另一个例子,如果A是[1 2 3; 4 5 6]和k = 3然后输出应为:

[ 1 2 3 0 0 0 0 0 0;
  4 5 6 0 0 0 0 0 0;
  0 0 0 1 2 3 0 0 0;
  0 0 0 4 5 6 0 0 0;
  0 0 0 0 0 0 1 2 3;
  0 0 0 0 0 0 4 5 6
]

1 个答案:

答案 0 :(得分:1)

它很容易退出,只需制作一个循环并播放矩阵O的大小:

A =[
     1     2     3;
     4     5     6]
O = zeros(size(A))
B = [A O; O A]
B =[
     1     2     3     0     0     0;
     4     5     6     0     0     0;
     0     0     0     1     2     3;
     0     0     0     4     5     6]

我希望你能找到这个。

clc
A =[
     1     2     3;
     4     5     6]
O = zeros(size(A))
B = [];
K = 3;
line = [];
for (i=1:K)
    line = [];
    for (j=1:K)
        if (j==i)
            line = [line A]
        else
            line =[line O]
        end
    end

    B = [B; line];
end