在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 的矩阵。
第一列是向量A
第二列是来自 B
的列,如 [A, B(first col)]
、[A, B(second col)]
- 第一个矩阵是
[6 1; 3 3; 10 0; 4 5; 2 4; 8 3];
- 第二个矩阵是
[6 2; 3 7; 10 9; 4 0; 2 6; 8 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 个矩阵
您可以先复制 A
的列,然后连接 A
和 B
,然后重塑:
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
first_matrix=[A,B(:,1)];
second_matrix=[A,B(:,2)];
third_matrix=[A,B(:,3)];
- ...等等
我有一个值为 [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 的矩阵。
第一列是向量
A
第二列是来自
B
的列,如[A, B(first col)]
、[A, B(second col)]
- 第一个矩阵是
[6 1; 3 3; 10 0; 4 5; 2 4; 8 3];
- 第二个矩阵是
[6 2; 3 7; 10 9; 4 0; 2 6; 8 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)
.
您可以使用 arrayfun
稍微更简洁地执行此操作,但它基本上是伪装的循环
C = arrayfun( @(ii) [A, B(:,ii)], 1:size(B,2), 'uni', 0 );
C = cat(3, C{:} );
如果您对元胞数组中的结果满意,您可以省略 cat
函数,在元胞数组中您可以使用 C{n}
.
您可以先复制 A
的列,然后连接 A
和 B
,然后重塑:
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
first_matrix=[A,B(:,1)];
second_matrix=[A,B(:,2)];
third_matrix=[A,B(:,3)];
- ...等等