我有两个矩阵
a = randi ([0 10], 5, 6)
b = randi ([0 10], 2, 45)
现在我想用a和b的所有元素构造一个大小为8 x 15的矩阵c。是否可以在单行代码中完成?请一些建议。
以下是我正在尝试做的一个例子:
a = [1 4 6;
5 8 0;
3 7 9;
4 10 5];
b = [5 6;
5 0];
c = [1 4 6 5;
8 0 3 7;
9 4 10 5;
5 6 5 0]
答案 0 :(得分:1)
有关如何合并a
和b
的规范尚不清楚。这是一种方法。
创建从a
和b
构建的单个列向量。然后reshape
将该列矢量转换为矩阵。
c = reshape( [ a(:); b(:) ], 8, 15);
如果numel(a) + numel(b)
等于c
中的元素总数,则仅有效。
尝试执行c = reshape( [ a(:); b(:) ], 7,12);
将失败,因为您没有提供足够的元素来创建7x12
矩阵。
<强>更新强> Noufal对这个答案的评论改变了问题。基本上你可以创建列向量,但只根据你拥有的元素数量来填充C:
A = rand(5,6);
B = rand(2,45);
C = zeros(8,10);
tmp = [A(:); B(:)]; % create temporary column vector
maxIdx = min( [numel(tmp), numel(C)] ); % determine if tmp or C has fewer elements
C(1:maxIdx) = tmp(1:maxIdx); % fill C from tmp using indices 1:maxIdx