⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 changeunits.m

📁 含有多种ICA算法的eeglab工具箱
💻 M
字号:
% changeunits() - Takes one or more points in one axes and gives its position %                 in another axes. Useful for drawing lines between %                 sbplots (see sbplot()).%%  Usage: >> newpoint(s) = changeunits(point(s),curaxhandle,newaxhandle)%%  Inputs:%     point(s)    - two-column vector of current [x y] data point locations %     curaxhandle - the point's current axes%     newaxhandle - the new axes handle. If figure handle or absent, returns %                   the coordinates of the points in the whole figure %%  Output:  %     newpoint(s) - the coordinates of the same point(s) in the new axes%%  Example: %  >> figure%  >> small1 = sbplot(4,4,10); % small axes in lower left%  >> plot(0.3,0.4,'ro'); % mark point [0.3 0.4] in small1 axes%  >> axis([0 1 0 1]); % set axes limits%    %  >> small2 = sbplot(4,4,7);  % small axes in upper right%  >> plot(0.6,0.7,'ro'); % mark point [0.6 0.7] in small2 axes%  >> axis([0 1 0 1]); % set axes limits%    %  >> large = sbplot(1,1,1);   % normal whole figure axes%  >> % Now draw line from point [0.3 0.4] in small1 axes%  >> %                 to point [0.6 0.7] in small2 axes%  >> from = changeunits([0.3 0.4],small1,large); % point in small1 axes%  >> to   = changeunits([0.6 0.7],small2,large); % point in small2 axes%  >> plot([from(1) to(1)],[from(2) to(2)])%  >> axis([0 1 0 1]); % set large axes limits%  >> axis off % finally, hide large axes %% Author: Colin Humphries, Salk Institute, La Jolla CA, Jan. 1998%123456789012345678901234567890123456789012345678901234567890123456789012% Copyright (C) 1998 Colin Humphries, Salk Institute, La Jolla CA, Jan. 1998%% This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 2 of the License, or% (at your option) any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the% GNU General Public License for more details.%% You should have received a copy of the GNU General Public License% along with this program; if not, write to the Free Software% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA% $Log: changeunits.m,v $% Revision 1.1  2002/04/05 17:36:45  jorn% Initial revision%% 02-01-01 added default 3rd arg, multiple points, example -Scott Makeig% 01-25-02 reformated help & license -ad function [newpnts] = changeunits(pnts,ax1,ax2)curax = gca;curfig = gcf;if nargin<2  help changeunits  error('Must have at least 2 arguments');endif size(pnts,2) ~= 2  help changeunits  error('Points must be 2-column');endif ~strcmp(get(ax1,'type'),'axes')  error('Second argument must be an axes handle')endif nargin<3  figh = get(ax1,'Parent');  figure(figh);  ax2 = axes('Units','Normal','Position',[0 0 1 1],'Visible','Off');    % whole figure axes in ax1 figureendif strcmp(get(ax2,'type'),'axes')   figh = get(ax1,'Parent');   if figh ~= get(ax2,'Parent')     error('Axes must be in the same figure.')   end      units1 = get(ax1,'Units');   units2 = get(ax2,'Units');   set(ax1,'Units','normalized')   set(ax2,'Units','normalized')      axpos1 = get(ax1,'Position');   axpos2 = get(ax2,'Position');   xlim1 = get(ax1,'Xlim');   xlim2 = get(ax2,'Xlim');   ylim1 = get(ax1,'Ylim');   ylim2 = get(ax2,'Ylim');   l1 = [xlim1(1) ylim1(1)];   l2 = [xlim1(2) ylim1(2)];   p1 = axpos1([1,2]);   p2 = axpos1([3,4]);   ll1 = [xlim2(1) ylim2(1)];   ll2 = [xlim2(2) ylim2(2)];   pp1 = axpos2([1,2]);   pp2 = axpos2([3,4]);   newpnts = zeros(size(pnts));   for p = 1:size(pnts,1)      figpnt = (((pnts(p,:)-l1)./(l2-l1)).*p2) + p1;     newpnts(p,:) = (((figpnt-pp1)./pp2).*(ll2-ll1)) + ll1;   end   set(ax1,'Units',units1)   set(ax2,'Units',units2)  elseif strcmp(get(ax2,'type'),'figure')  axpos1 = get(ax1,'Position');  xlim1 = get(ax1,'Xlim'); % value limits in ax1  ylim1 = get(ax1,'Ylim');  l1 = [xlim1(1) ylim1(1)];  l2 = [xlim1(2) ylim1(2)];  p1 = axpos1([1,2]);  p2 = axpos1([3,4]);  newpnts = zeros(size(pnts));  for p = 1:size(pnts,1) % unnecessary loop?    newpnts(p,:) = (((pnts(p,:)-l1)./(l2-l1)).*p2) + p1;  endend if nargin<3  delete(ax2)endfigure(curfig); % restore gcfaxes(curax);    % restore gca

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -