【问题标题】:Building matrices using column vector and matrix in matlab在matlab中使用列向量和矩阵构建矩阵
【发布时间】:2021-07-12 12:01:54
【问题描述】:

我有一个列向量 A (6x1) 的值 [6 3 10 4 2 8]'; 和一个矩阵 B (6x5) 的值

B = [1  2  3  0  4 ; 
     3  7  8  5  0 ; 
     0  9  1  0  1 ; 
     5  0  3  1  2 ;    
     4  6  7  6  4 ; 
     3  1  2  7  3]

我想用 Matlab 制作五个大小为 6x2 的矩阵。

  • 第一列是向量A

  • 第二列是来自B的列,例如[A, B(first col)][A, B(second col)]

    1. 第一个矩阵是[6 1; 3 3; 10 0; 4 5; 2 4; 8 3];
    2. 第二个矩阵是[6 2; 3 7; 10 9; 4 0; 2 6; 8 1]
    3. ...等等

任何帮助我都非常感谢

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    你可以使用循环

    C = NaN( size(B,1), 2, size(B,2) );
    for ii = 1:size(B,2)
        C(:,:,ii) = [A, B(:,ii)];
    end
    

    这为您提供了一个 3D 数组,其中第 3 维中的每个切片都是一个 6x2 矩阵(对于此示例),如您所愿。您可以使用 C(:,:,n) 访问第 n 个切片。

    您可以使用arrayfun 更简洁地执行此操作,但它基本上是一个变相的循环

    C = arrayfun( @(ii) [A, B(:,ii)], 1:size(B,2), 'uni', 0 );
    C = cat(3, C{:} );
    

    如果您对元胞数组中的结果感到满意,可以省略 cat 函数,您可以在其中使用C{n} 访问第 n 个矩阵。

    【讨论】:

    • 感谢您的回复。在对 C(:,:,ii) 进行一些操作后,我得到 C(6,1,ii),即所有矩阵将变成一列。我想绘制第一行 C(6,1 ) 和 ii 矩阵的另一第一行的值,我该怎么做。
    • 如果此答案解决了您的原始问题,请将其标记为已接受并提出新问题。请记住在新问题中包含minimal reproducible example(类似于您在此处所做的),以便它是独立的
    【解决方案2】:

    您可以先复制A 的列,然后连接AB,然后重塑:

    At = repmat(A, 1, size(B,2));
    C = reshape([At;B], 6, 2, []);
    

    或单线:

    C = reshape([repmat(A, 1, size(B,2));B], 6, 2, []);
    

    然后使用C(:,:,k)检索您的矩阵

    【讨论】:

      【解决方案3】:
      you can use this 
      
      1. first_matrix=[A,B(:,1)];
      2. second_matrix=[A,B(:,2)];
      3. third_matrix=[A,B(:,3)];
      4. ...等等

      【讨论】:

        猜你喜欢
        • 2017-02-19
        • 1970-01-01
        • 2021-12-04
        • 2016-02-22
        • 2014-07-27
        • 2016-07-16
        • 2015-01-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多