我想在一个矩阵中连接2个或多个不同长度的向量,并用零填充其余位置。
例如,假设我有一个包含3个元素的向量,另一个是4个。我想创建一个(2x4)矩阵,其中包含上述第二个向量,第一个向量的末尾为零。 / p>
我尝试使用此功能:
v1 = [1 2 3];
v2 = [1 2 3 4];
M(1,:) = v1; M(2,:) = v2;
%and also cat(1,v1,v2) and cat(3,v1,v2)
但是没有用。我还必须考虑到我不知道第二个向量的元素数量(矩阵将在for循环中形成,将每个向量添加到矩阵的一行中。)
我希望有人能帮助我。谢谢您的回复。
答案 0 :(得分:1)
M = zeros(2,max(length(v1),length(v2)));
M(1,1:length(v1)) = v1;
M(2,1:length(v2)) = v2;
答案 1 :(得分:0)
v1 = [1 2 3];
v2 = [1 2 3 4 5 6 7];
mxl=max(numel(v1),numel(v2))
m=[[v1 zeros(1,mxl-numel(v1))]; [v2 zeros(1,mxl-numel(v2))]]
答案 2 :(得分:0)
尽管我认为这是一个典型的xy问题,但对于多个向量来说,这是更通用的解决方案:
v{1} = [1 2 3];
v{2} = [10 20 30 40];
v{3} = [8 9];
ml = max (cellfun ("numel", v));
M = cat (1, cellfun (@(c) postpad (c, ml, 0), v, "UniformOutput", false){:})
M =
1 2 3 0
10 20 30 40
8 9 0 0