【问题标题】:Is it possible to display all submatrices each represented by a variable in matlab?是否可以显示所有子矩阵,每个子矩阵都由 matlab 中的一个变量表示?
【发布时间】:2015-01-22 04:04:51
【问题描述】:

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

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

【问题讨论】:

  • 不要使用a1a2a3等名称。它们以后很难使用!尝试使用元胞数组:a{1}=[14 11]a{2}=[16 16],会容易得多!

标签: matlab matrix submatrix


【解决方案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

【讨论】:

    【解决方案2】:
    1. 将矩阵重塑为线性数组
    2. 将线性数组重塑为您想要的任何格式,在本例中为 2 x x 矩阵,因此每一行都是一个子矩阵。

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

    如果要将结果投射到单元格中,可以使用命令mat2cell()

    【讨论】:

    • 这行得通,但对其工作原理的一些解释,而不是简单的代码转储可能是有益的。此外,OP 需要一个单元阵列。这只会产生一个二维矩阵。
    猜你喜欢
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2016-12-21
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多