如何将矩阵的行连接成向量?

Posted

技术标签:

【中文标题】如何将矩阵的行连接成向量?【英文标题】:How do you concatenate the rows of a matrix into a vector? 【发布时间】:2011-02-13 00:28:30 【问题描述】:

对于一个 m×m(方形)数组,如何将所有行连接成一个大小为 m^2 的列向量?

【问题讨论】:

矩阵连接通常不意味着乘法吗? 我想他只是想把方阵“压平”成列向量,不是吗? 【参考方案1】:

有几种不同的方法可以将矩阵折叠成向量,具体取决于您希望矩阵的内容如何填充该向量。这里有两个例子,一个使用函数reshape(在第一个transposing矩阵之后),一个使用colon syntax(:)

>> M = [1 2 3; 4 5 6; 7 8 9];    % Sample matrix
>> vector = reshape(M.', [], 1)  % Collect the row contents into a column vector

vector =

     1
     2
     3
     4
     5
     6
     7
     8
     9

>> vector = M(:)  % Collect the column contents into a column vector

vector =

     1
     4
     7
     2
     5
     8
     3
     6
     9

【讨论】:

【参考方案2】:

将矩阵更改为向量的一个非常重要的注意事项是,如果您使用A(:),MATLAB 会从矩阵的列中生成输出向量

例如:

A = [1 2 3 ; 4 5 6]

B = A (:)

B = [1 4 2 5 3 6]

您可以在下图中看到变化的方向。

【讨论】:

以上是关于如何将矩阵的行连接成向量?的主要内容,如果未能解决你的问题,请参考以下文章

调用适用于矩阵或向量的行的通用代码

为指针向量赋值

matlab获取矩阵和向量长度length和size

如何使用opencv从矩阵向量构造图像

GLM的向量矩阵乘法行为?

MATLAB中如何用for 循环将结果代入矩阵中?