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

是否可以在matlab中显示每个由变量表示的所有子矩阵?,matlab,matrix,submatrix,Matlab,Matrix,Submatrix,是否有任何内置函数可以在matlab中显示矩阵中的所有子矩阵? 为了显示一个子矩阵,我们有函数x(:,m:n)。 例如:考虑一个4×4矩阵 A = 14 11 16 16 15 2 16 8 3 5 3 13 15 9 16 3 如果所有子矩阵的大小为1 x 2,如何显示一个图形中存在的所有子矩阵?以及如何用变量表示每个子矩阵(例如:a1、a2等) 如何以单元格

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

   A = 14    11    16    16
       15     2    16     8
        3     5     3    13
       15     9    16     3
如果所有子矩阵的大小为1 x 2,如何显示一个图形中存在的所有子矩阵?以及如何用变量表示每个子矩阵(例如:a1、a2等)


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

您可以使用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
  • 将矩阵重塑为线性阵列
  • 将线性阵列重塑为所需的任何格式,在本例中为2 by
    x
    matrix,以便每行为一个子矩阵

    reshape(reshape(A', numel(A), 1), 2, numel(A)/2)'
    

  • 如果要将结果强制转换为单元格,可以使用命令
    mat2cell()

    不要使用像
    a1
    a2
    a3
    等名称。以后很难使用它们!尝试使用一个单元格数组:
    a{1}=[14 11]
    a{2}=[16 16]
    ,这会容易得多!这是可行的,但是对其工作原理的一些解释,而不是简单的代码转储可能是有益的。此外,OP需要一个单元阵列。这只会生成二维矩阵。
    reshape(reshape(A', numel(A), 1), 2, numel(A)/2)'