将 (NxN) 阶矩阵的值转换为 (NxN, 1) 阶向量

converting values of a matrix of order (NxN) to a vector with order (NxN, 1)

我有一个矩阵,假设 A 的 NxN 阶(此处为 3x3)由以下公式给出:

A = | a b c|
    | d e f|
    | g h i|

我想将此矩阵转换为 [NxN, 1](此处为 9x1)阶向量:

P = |a|
    |b|
    |.|
    |.|
    |.|
    |i|

所以,现在我用于将其转换为更大阶的矩阵和向量的是:

% A is a given matrix with some arbitrary values of order (N,M)

P = zeros(N*M, 1);
  
for i = 1:N
    for j = 1:M
       P((i-1)*M + j, 1) = A(i,j)
    end 
end 

但我仍然在向量 P 中得到一些值为零的值。我不确定我做错了什么。有什么建议,代码中应该更正什么? 我还觉得有可能某些值与矢量 P 中一些已经填充的数据字段重叠。

您总是可以简单地展开矢量

P=A(:);

当然,您不喜欢这种排序方式

Aaux=A.'; %transpose first.
P=Aaux(:);

您可能想看看 reshape function

reshape 对于将向量转换为矩阵非常方便:

>> a = [1;2;3;4;5;6;7;8;9]
a =
     1
     2
     3
     4
     5
     6
     7
     8
     9
>> M = 3
M =
     3
>> N = 3
N =
     3
>> b = reshape(a,M,N)
b =
     1     4     7
     2     5     8
     3     6     9

或将矩阵转化为向量!:

>> a = [1 2 3; 4 5 6; 7 8 9]
a =
     1     2     3
     4     5     6
     7     8     9
>> b = reshape(a,numel(a),1)
b =
     1
     4
     7
     2
     5
     8
     3
     6
     9

如果您要将矩阵转换为向量,reshape 在与 numel 结合使用时尤其强大(已记录 here)。