从现有的两个其他矩阵构造一个矩阵,所有矩阵都有不同的大小

时间:2013-01-16 17:07:32

标签: matlab matrix

我有两个矩阵

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]

1 个答案:

答案 0 :(得分:1)

有关如何合并ab的规范尚不清楚。这是一种方法。

创建从ab构建的单个列向量。然后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