0

是否有任何内置函数可以显示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] 

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

4

2 回答 2

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
于 2015-01-22T04:22:14.840 回答
1
  1. 将矩阵重塑为线性阵列
  2. 将线性数组重塑为您想要的任何格式,在本例中为 2 by xmatrix,因此每一行都是一个子矩阵。

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

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

于 2015-01-22T08:31:10.503 回答