编者按:这个文件是一个文件交换本周精选
曾经希望MATLAB有一个放大镜,这样你就可以查看你的图的一个小区域的细节,而不必一次又一次地放大和缩小?只运行的放大。M ',将感兴趣的图形作为当前图形,然后使用鼠标左键调出您控制的放大视图。或者使用“Ctrl”键,点击打开放大镜,放大镜在释放图形时“锁定”(用于复制和打印图形)。使用“<”和“>”键可以使放大镜变小或变大。使用'-'和'+'来减少或增加放大级别。
里克几何(2021)。放大(//www.tatmou.com/matlabcentral/fileexchange/5961-magnify), MATLAB中央文件交换。检索.
太棒了!
谢谢,伙计,这正是我想要的。
https://www.wiscon-tech.com/air-classifier-zigzag-separation/
我将优化我的产品基于这个文件。
如何使用
谢谢你!
不错的
如何退出?
太棒了!
非常感谢
感谢您的卓越功能,请告诉我如何退出这个功能?
增加了一个简单的修改,允许独立的x/y放大。调整a2的设置用户数据在第31行有三个字段(2 2 0.2),调整64行调用a2_param(3)不(2)位置设置,设置67行调用a2_param(2)(1),然后添加两个额外的elseifs复制75 - 78行修改a2_param(2)与您选择的按钮(我去[和])。比单一变焦有用多了。
很好的工具。它是非常有用的。谢谢你!
非常感谢。它的工作。
非常有帮助,非常感谢!
你好,当我把这个函数放到MATLAB2018版本的库中,我得到一个错误:Calculate Figure WindowButtonMotionFcn。但它适用于较低版本的软件。
这是非常有用的!
伟大的功能。但是,我想在不关闭图形的情况下停止函数的执行,但是还没有找到一个干净的方法来这样做。
我在尝试删除/删除放大框时遇到了另一个问题,即右键单击或按住“Ctrl”,但我能够通过将第34-37行替换为:
集(a2,“标签”,“MagBox”,“用户数据”,[2,0.2],“颜色”,得到(a1,“颜色”),“盒子”,“上”);%放大倍数,帧大小
然后在第92行之后添加以下代码:
elseif strcmp(eventdata.Key,'backspace') || strcmp(eventdata.Key,'delete')
删除(findobj (src.Children、“类型”、“轴”,“标签”,“MagBox”))
这将添加一个标签到添加的轴,使它更容易识别,然后删除所有放大轴时,'delete'或'backspace'被按下。
伟大的工作!谢谢你!
如何移动锁定放大镜?
太好了!谢谢!
谢谢
太好了!谢谢~
谢谢
美妙的,谢谢!
谢谢你!
伟大的
非常感谢!
它真的帮了我很多。
谢谢你! !
这对我帮助很大,如果您不介意的话,我在代码中做了一些小小的修改。
谢谢你!
谢谢你!
很好的~
非常经验
伟大的工作!它帮了我很大的忙,我在代码中做了一些小小的修改。
f1 =图;
情节(1:10 0,randn(1100),(施用)/ 3,兰特(1300)),网格,
放大(f1)
%在运行下一个代码之前,你必须完成图中的放大。假设我们只放大一次。
d = (f1,‘孩子’);
d(1)。Position=[0 0.5 d(1).Position(3) d(1).Position(4)];%将放大后的数字移动到指定位置
轴= d (2);
矩形(“位置”,[d (1) .XLim(1)、d (1) .YLim(1)、d (1) .XLim (2) - (1) .XLim(1)、d (1) .YLim (2) - (1) .YLim(1)),“线宽”,2、“线型”,‘-’,‘EdgeColor’,‘r’%马克原始图的放大部分
应该将“fullcrosshair”替换为“crosshair”,因为在R2015及后续版本中不支持前一个(可能在R2014中也不支持)金宝app
这是非常有用的!干得好!matlab现在更强大了
它似乎不工作时,数字风格是靠边的-有什么想法为什么不?
要重现这种行为,请尝试以下方法,但并不奏效:
集(0,“DefaultFigureWindowStyle”,“停靠”);
人物,情节(1:10 0,randn(1100),施用)/ 3,兰特(1300))
网格;放大
但是如果你回到set(0,'DefaultFigureWindowStyle','normal');然后就可以正常工作了。
非常感谢!
由于男人!这是非常聪明的!
太棒了! !
这对我的论文非常有用,谢谢。伟大的工作!
完美! !
不错的工作。
如何将它从当前的图形中分离而不关闭它?
谢谢!
优秀的代码。我如何扩展这个到图形上的uipanel内部的图像?
太好了!谢谢!
优秀的
好^ _ ^
在我的例子中,y轴是对数缩放的,似乎只是一个小小的修改,如下所示
取代
集(a2, YLim, a1_cp (2) + (1 / a2_param (1)) * (a2_pos (4) / a1_pos (4)) * diff (get (a1, YLim)) *(-0.5 - 0.5))(在函数“ButtonMotionCallback”)
通过
集(a2, YLim, 10。^ (log10 (a1_cp (2) + (1 / a2_param (1)) * (a2_pos (4) / a1_pos (4)) * log10 (Ylima1 (2) / Ylima1 (1)) * (-0.5 - 0.5)))
为了正常工作,我做了以下更改:
在==>放大>ButtonDownCallback在39
设置((a2,‘孩子’),…
——“线宽”,2);
+ line_obj = findobj(a2, 'Type', 'line');
+如果~ isempty (line_obj)
+ set(line_obj, 'LineWidth', 2);
+结束
很好的功能!但是有一个小问题。通过对函数中的图像进行操作,出现了一个错误:
> > imshow (im, []);
> >放大;
???使用==>设置时出错
在“图像”类中没有“LineWidth”属性。
在==>放大>ButtonDownCallback在39
设置(获取(a2,‘孩子’),…
因此,错误函数在鼠标移动时继续正常工作。
我认为,有必要检查坐标轴上的物体是图像,在这种情况下消除直线属性的变化。
优秀的工作。我想它需要另一个版本来处理在Matlab的新版本中暴露出来的一些bug。
我在imshow()中使用这个函数,它会给我一个错误:
在“图像”类中没有“LineWidth”属性。
在==>放大>ButtonDownCallback在39
设置(获取(a2,‘孩子’),…
当然,我可以通过删除这行代码轻松地解决它。同时,Ctrl键似乎会离开图像上的框。另一件可能需要更改的事情是将第二个轴的XTick和YTick设置为[]:
set(a2, 'XTick', [], 'YTick', []);
再次,良好的工作!
这是一个很棒的应用,但当我用它来查看曲线图时,它会删除一组数据。值得考虑的一点?
-qooroo
我也喜欢它,但是当x轴是以对数为基础时,它似乎不太好用。这就是我所使用的(频率通常是这样绘制的)。我看了代码,但不确定它将花费我多长时间,使mod.....
优秀的,美妙的函数
整洁的! !谢谢!
这真是太棒了。
我不确定我是否做错了,ctrl+click使方框停留在图上。如果我想在相同的轴上绘制另一个图形,我如何删除它。
这看起来非常有用,有人看到它在MATLAB R2007a的后续版本中有什么问题吗?缩放区域不在情节上方,所以无法看到…
极好的,等等。
在GUI中处理鼠标按钮运动和使用“UserData”的出色指导。除了学习,它还为我自己的GUI开发节省了时间。
谢谢。
j·法伦
很好,很有帮助
非常好!
优秀的
非常有用的代码。伟大的工作!
如果有人能告诉我,我是否可以使用这段代码来放大其他程序(例如幻灯片细节)?
谢谢
我已经通过设置单位为“标准化”解决了这个问题。在一个gui内的多个轴上工作很好。问题:
如何删除剩余的窗口,如果你
偶尔按下鼠标右键?
这是一个优秀的工具!谢谢!
对于那些需要它来处理图像的人,只需用LineWidth注释掉这一行:
%设置((a2,‘孩子’),…
%“线宽”,2);
这就解决了问题。
我现在想弄清楚的是,如何让它在一个有几个轴的gui中工作。因为某些原因,似乎把放大的图像放在gui的边缘。什么好主意吗?
非常好的应用程序,谢谢!我稍微修改了一下控制。现在,箭头键分别控制每个轴的放大倍数,而括号控制一起,+/-键控制窗口大小。
伟大的工作!MATLAB应该添加它作为一个标准图标在他们的图形面板…
一个小注释:如果你可以在第一句话“if (nargin == 0), f1 = gcf;”之后添加一句话“figure(f1);”,应该更方便。这样,用户选中的图形或当前选中的图形就会自动弹出,被“放大”。
谢谢分享!
我赞同Jiro的建议,以及小组一致认为这是一个非常好的功能!
非常好!一个评论:
如果你可以在设置LINEWIDTH之前设置一个检查,以防有对象没有这个属性(例如图像,灯光等)。我可以用这个来放大图像文件。
很好!
从1到5,我把它标为6。
哇!太好了!
非常酷的
辉煌!
你做了我真正需要的…谢谢你!
非常非常好!
确实很棒的功能!恭喜你!
优秀的! !