1

我有两个矩阵

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]
4

1 回答 1

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
于 2013-01-16T17:11:18.487 回答