收藏 分销(赏)

matlab-magnify-源程序.doc

上传人:快乐****生活 文档编号:2643552 上传时间:2024-06-03 格式:DOC 页数:5 大小:22.04KB 下载积分:6 金币
下载 相关 举报
matlab-magnify-源程序.doc_第1页
第1页 / 共5页
matlab-magnify-源程序.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
(完整版)matlab magnify 源程序 % start of program function magnify(f1) % magnify(f1) % Figure creates a magnification box when under the mouse position when a button is pressed。 Press '+’/'—’ while % button pressed to increase/decrease magnification. Press ’>’/’<' while button pressed to increase/decrease box size. % Hold 'Ctrl’ while clicking to leave magnification on figure。 % % Example: % plot(1:100,randn(1,100),(1:300)/3,rand(1,300)), grid on, % magnify; if (nargin == 0), f1 = gcf; end; figure(f1); set(f1, 。。。 ’WindowButtonDownFcn’, @ButtonDownCallback, .。。 'WindowButtonUpFcn', @ButtonUpCallback, ... ’WindowButtonMotionFcn’, @ButtonMotionCallback, 。.。 ’KeyPressFcn', @KeyPressCallback); return; function ButtonDownCallback(src,eventdata) f1 = src; a1 = get(f1,'CurrentAxes’); a2 = copyobj(a1,f1); set(f1, 。。. ’UserData’,[f1,a1,a2], .。. ’Pointer',’fullcrosshair', 。.。 'CurrentAxes’,a2); set(a2, .。. 'UserData',[2,0.2], 。。. %magnification, frame size 'Color’,get(a1,’Color'), 。.。 'Box',’on'); xlabel('’); ylabel(''); zlabel(’’); title(''); set(get(a2,'Children’), ..。 'LineWidth', 2); set(a1, .。。 'Color',get(a1,’Color')*0。95); set(f1, 。。。 'CurrentAxes',a1); ButtonMotionCallback(src); return; function ButtonUpCallback(src,eventdata) H = get(src,'UserData’); f1 = H(1); a1 = H(2); a2 = H(3); set(a1, ... 'Color',get(a2,'Color')); set(f1, .。. ’UserData',[], 。。. ’Pointer’,’arrow’, 。。。 ’CurrentAxes’,a1); if ~strcmp(get(f1,’SelectionType'),’alt'), delete(a2); end; return; function ButtonMotionCallback(src,eventdata) H = get(src,'UserData’); if ~isempty(H) f1 = H(1); a1 = H(2); a2 = H(3); a2_param = get(a2,’UserData’); f_pos = get(f1,’Position’); a1_pos = get(a1,'Position’); [f_cp, a1_cp] = pointer2d(f1,a1); set(a2,’Position’,[(f_cp。/f_pos(3:4)) 0 0]+a2_param(2)*a1_pos(3)*[-1 —1 2 2]); a2_pos = get(a2,'Position'); set(a2,'XLim',a1_cp(1)+(1/a2_param(1))*(a2_pos(3)/a1_pos(3))*diff(get(a1,’XLim’))*[-0.5 0.5]); set(a2,’YLim',a1_cp(2)+(1/a2_param(1))*(a2_pos(4)/a1_pos(4))*diff(get(a1,’YLim'))*[-0.5 0。5]); end; return; function KeyPressCallback(src,eventdata) H = get(gcf,’UserData'); if ~isempty(H) f1 = H(1); a1 = H(2); a2 = H(3); a2_param = get(a2,'UserData’); if (strcmp(get(f1,'CurrentCharacter'),’+') | strcmp(get(f1,’CurrentCharacter'),’=’)) a2_param(1) = a2_param(1)*1。2; elseif (strcmp(get(f1,’CurrentCharacter'),’-’) | strcmp(get(f1,’CurrentCharacter’),’_')) a2_param(1) = a2_param(1)/1。2; elseif (strcmp(get(f1,’CurrentCharacter'),’〈') | strcmp(get(f1,’CurrentCharacter’),',’)) a2_param(2) = a2_param(2)/1.2; elseif (strcmp(get(f1,'CurrentCharacter'),'>’) | strcmp(get(f1,'CurrentCharacter'),’。')) a2_param(2) = a2_param(2)*1.2; end; set(a2,’UserData',a2_param); ButtonMotionCallback(src); end; return; % Included for completeness (usually in own file) function [fig_pointer_pos, axes_pointer_val] = pointer2d(fig_hndl,axes_hndl) % %pointer2d(fig_hndl,axes_hndl) % %Returns the coordinates of the pointer (in pixels) %in the desired figure (fig_hndl) and the coordinates % in the desired axis (axes coordinates) % % Example: % figure(1), % hold on, % for i = 1:1000, % [figp,axp]=pointer2d; % plot(axp(1),axp(2),’.','EraseMode’,’none’); % drawnow; % end; % hold off % Rick Hindman - 4/18/01 if (nargin == 0), fig_hndl = gcf; axes_hndl = gca; end; if (nargin == 1), axes_hndl = get(fig_hndl,'CurrentAxes'); end; set(fig_hndl,'Units’,’pixels'); pointer_pos = get(0,’PointerLocation');%pixels {0,0} lower left fig_pos = get(fig_hndl,'Position’);%pixels {l,b,w,h} fig_pointer_pos = pointer_pos — fig_pos([1,2]); set(fig_hndl,'CurrentPoint’,fig_pointer_pos); if (isempty(axes_hndl)), axes_pointer_val = []; elseif (nargout == 2), axes_pointer_line = get(axes_hndl,'CurrentPoint’); axes_pointer_val = sum(axes_pointer_line)/2; end; % end of program
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服