РЕДАКТИРОВАТЬ:
Я отредактировал свое предыдущее решение, чтобы вам не приходилось вводить параметр maxLength
для функции.Функция вычисляет его перед заполнением.
function out=joinUnevenVectors(varargin)
%#Horizontally catenate multiple column vectors by appending zeros
%#at the ends of the shorter vectors
%#
%#SYNTAX: out = joinUnevenVectors(vec1, vec2, ... , vecN)
maxLength=max(cellfun(@numel,varargin));
out=cell2mat(cellfun(@(x)cat(1,x,zeros(maxLength-length(x),1)),varargin,'UniformOutput',false));
Удобство использования функции в том, что вы можете легко объединять несколько неравных векторов в одну строку как joinUnevenVectors(vec1,vec2,vec3,vec4)
и так далее, без необходимостивведите его вручную в каждой строке.
ПРИМЕР:
short = [1 2 3]';
long = [4 5 6 7]';
joinUnevenVectors(short,long)
ans =
1 4
2 5
3 6
0 7