Давайте определим пример данных:
dt1 = randi(10,10,1)-1;
dt2 = randi(10,7,1)-1;
dt3 = randi(10,6,1)-1;
dt4 = randi(10,5,1)-1; %// example data. Column vectors.
Один из подходов - создать маску с bsxfun
и затем заполнить значения в позициях, указанных маской:
dt = {dt1, dt2, dt3, dt4}; %// collect data into a cell array
n = cellfun(@numel, dt); %// length of each vector
mask = bsxfun(@le, (1:max(n)).', n); %// create mask
result = zeros(size(mask)); %// initiallize result with zeros
result(mask) = vertcat(dt{:}); %// fill in values.
Пример результата (со случайными данными):
result =
2 3 2 7
3 9 8 6
4 7 9 0
4 3 5 7
2 1 1 1
1 7 7 0
8 0 0 0
1 0 0 0
7 0 0 0
8 0 0 0