• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: 局部放大  magnify  

资源简介

使用方法:1.打开figure图(取消编辑模式),2.在matlab命令窗口中输入magnify,3.回到figure窗口,左键动态选取查看,4.ctrl+左键固化,也可右键固化,‘’缩放方法范围,‘+’和‘-’缩放放大比例

资源截图

代码片段和文件信息

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:100randn(1100)(1:300)/3rand(1300)) grid on
%     magnify;

% Rick Hindman - 7/29/04

if (nargin == 0) f1 = gcf; end;
set(f1 ...
   ‘WindowButtonDownFcn‘  @ButtonDownCallback ...
   ‘WindowButtonUpFcn‘ @ButtonUpCallback ...
   ‘WindowButtonMotionFcn‘ @ButtonMotionCallback ...
   ‘KeyPressFcn‘ @KeyPressCallback);
return;

function ButtonDownCallback(srceventdata)
   f1 = src;
   a1 = get(f1‘CurrentAxes‘);
   a2 = copyobj(a1f1);

   set(f1 ...
      ‘UserData‘[f1a1a2] ...
      ‘Pointer‘‘fullcrosshair‘ ...
      ‘CurrentAxes‘a2);
   set(a2 ...
      ‘UserData‘[20.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(srceventdata)
   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(srceventdata)
   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(f1a1);

      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_c

评论

共有 条评论