在matlab中使用列向量和矩阵构建矩阵

Building matrices using column vector and matrix in matlab

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

的矩阵 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 的矩阵。

非常感谢任何帮助

你可以使用循环

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 个矩阵

您可以先复制 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)

检索您的矩阵
you can use this 
  1. first_matrix=[A,B(:,1)];
  2. second_matrix=[A,B(:,2)];
  3. third_matrix=[A,B(:,3)];
  4. ...等等