是否可以在matlab中显示每个由变量表示的子矩阵?

时间:2015-01-22 04:04:51

标签: matlab matrix submatrix

是否有任何内置函数可以在matlab中显示矩阵中的所有子矩阵? 为了显示一个子矩阵,我们有函数x(:,m:n)。 例如:考虑一个4 x 4矩阵

   A = 14    11    16    16
       15     2    16     8
        3     5     3    13
       15     9    16     3

如果所有子矩阵的大小是1 x 2,如何显示A中存在的所有子像素?另外如何用变量表示每个子矩阵(例如:a1,a2..etc)

   a{1}=[14 11]
   a{2}=[16 16]
   .
   .
   a{8}=[16 3] 

如何以单元格数组的形式显示所有子矩阵?请帮忙。提前谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用mat2cell命令根据需要拆分原始矩阵,然后使用cell2mat再次将结果作为(子)矩阵。在您的特定示例中,使用与上面相同的matix A,您可以这样使用它:

B = mat2cell(A,[1 1 1 1],[2 2])

cell2mat(B(1,1))
ans =

   14   11

cell2mat(B(1,2))
ans =

   16   16

cell2mat(B(4,2))
ans =

   16    3

答案 1 :(得分:1)

  1. 将矩阵重塑为线性阵列
  2. 将线性数组重新整形为您想要的任何格式,在这种情况下,x矩阵为2,因此每行都是一个子矩阵。

    reshape(reshape(A', numel(A), 1), 2, numel(A)/2)'
    
  3. 如果要将结果转换为单元格,可以使用命令mat2cell()