gusucode.com > 信号处理工具箱 - signal源码程序 > signal\signal\siggui\private\merge.m

    function x = merge(x1,x2)
%MERGE  Interleave elements.
%   x = merge(x1,x2) returns length N+M vector where x1 is length
%   N and x2 is length M and x = [x1(1) x2(1) x1(2) x2(2) ... ] or
%   x = [x2(1) x1(1) x2(2) x1(2) ...] depending on if x1(1) < x2(1).
%   Note that abs(M-N) must be 1 or less.
%
%   Example:  x1 = findpeaks(y); x2 = findpeaks(-y);  x = merge(x1,x2);

%   Copyright (c) 1988-98 by The MathWorks, Inc.
%   $Revision: 1.1 $

    L1 = length(x1);
    L2 = length(x2);
    if L1 == L2
        if x1(1) < x2(1)
            x = [x1(:).'; x2(:).'];
        else
            x = [x2(:).'; x1(:).'];
        end
        x = x(:);
    elseif L1 < L2
        x = [0 x1(:).'; x2(:).'];
        x=x(2:end);
    elseif L1 > L2
        x = [x1(:).'; x2(:).' 0];
        x = x(1:end-1);
    end