【问题标题】:converting values of a matrix of order (NxN) to a vector with order (NxN, 1)将阶 (NxN) 矩阵的值转换为阶 (NxN, 1) 向量
【发布时间】:2021-06-23 09:05:21
【问题描述】:

我有一个矩阵,假设 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 中一些已填充的数据字段重叠。

【问题讨论】:

    标签: matlab matrix vector data-conversion


    【解决方案1】:

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

    P=A(:);
    

    当然,你们中的一些人不喜欢这种排序

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

    【讨论】:

    • @Ander Biguri 感谢您的回答,这也很简单。
    • @Dev-iL,我认为转置是为了改变元素的顺序,它将如何附加到向量中,比如水平或垂直。感谢您指出,我会看看我需要如何使用它。
    【解决方案2】:

    你可能想看看reshapefunction

    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
    

    如果您要将矩阵转换为向量,reshapenumel 结合使用时会特别强大(记录在here)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 2016-11-14
      • 2014-11-11
      相关资源
      最近更新 更多