TSp-dsxy2figxy

function varargout = dsxy2figxy(varargin)

if length(varargin{1}) == 1 && ishandle(varargin{1}) ...

                            && strcmp(get(varargin{1},'type'),'axes')  

    hAx = varargin{1};

    varargin = varargin(2:end);

else

    hAx = gca;

end;

if length(varargin) == 1

    pos = varargin{1};

else

    [x,y] = deal(varargin{:});

end

axun = get(hAx,'Units');

set(hAx,'Units','normalized');

axpos = get(hAx,'Position');

axlim = axis(hAx);

axwidth = diff(axlim(1:2));

axheight = diff(axlim(3:4));

if exist('x','var')

    varargout{1} = (x - axlim(1)) * axpos(3) / axwidth + axpos(1);

    varargout{2} = (y - axlim(3)) * axpos(4) / axheight + axpos(2);

else

    pos(1) = (pos(1) - axlim(1)) / axwidth * axpos(3) + axpos(1);

    pos(2) = (pos(2) - axlim(3)) / axheight * axpos(4) + axpos(2);

    pos(3) = pos(3) * axpos(3) / axwidth;

    pos(4) = pos(4) * axpos(4 )/ axheight;

    varargout{1} = pos;

end

set(hAx,'Units',axun)

posted @ 2020-04-17 20:44  free-锻炼身体  阅读(363)  评论(0编辑  收藏  举报