from Interleave by Assaf Mushinsky
Interleave any number of vectors to one column vector

interleave(varargin)
function vec = interleave(varargin)
lengths = cellfun(@length,varargin);
for i = 1 : length(varargin)
    varargin{i} = reshape(varargin{i},1,numel(varargin{i}));
end

if all(lengths(1) == lengths)
    vec = vertcat(varargin{:});
    vec = vec(:);
else
    newLength = min(lengths);
    [varargin1,varargin2] = cellfun(@(x) deal(x(1:newLength),x(newLength+1:end)), varargin,'UniformOutput',false);
    notEmpty = ~cellfun(@isempty,varargin2);
    vec = interleave(varargin1{:});
    varargin2 = varargin2(notEmpty);
    vec = vertcat(vec,interleave(varargin2{:}));
end

Contact us