www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregGui/@intervalPatch1D/convertConstraintVector.m

    function int = convertConstraintVector(xdata, condata)
%CONVERTCONSTRAINTVECTOR Create intervals from constraint information.
%
%   INT = CONVERTCONSTRAINTVECTOR(X, CONDATA) is a static method that
%   converts logical or distance constraint values into open intervals.

%   Copyright 2006-2013 The MathWorks, Inc.


if isempty(xdata)
    int = NaN;
else
    % Convert constraint values into logical where true implies outside the
    % constraint, not inside.
    if islogical(condata)
        condata = ~condata;
    else
        condata = condata>1e-6;
    end
    
    % Data is padded at each end: it is assumed that outside the range is
    % outside constraint.
    condatadiff = diff([1, condata(:)', 1]);
    xdata = xdata(:)';
    xdatamid = [xdata(1), xdata(1:end-1)+diff(xdata)/2 xdata(end);];
    pos = [find(condatadiff>0),  find(condatadiff<0)];
    int = xdatamid(sort(pos));
end