放大一个子图,然后在另一个子图中显示

时间:2013-05-07 04:47:03

标签: image user-interface matlab-figure matlab-guide

我创建了一个有2个子图的GUI。第一个显示原始图像。

当我想放大第一个子图,然后在第二个子图中显示时,我该怎么办?提前致谢

1 个答案:

答案 0 :(得分:0)

您可以通过将数据从第一个子图复制到第二个子图并设置轴限制来实现。这是一个不使用GUI但应该以相同方式工作的示例:

figure
% create two subplots
ax1 = subplot(2,1,1);
ax2 = subplot(2,1,2);

% display some data in the first subplot
axes(ax1);
imagesc(spiral(10));

% get the range of the axes in the first subplot
xLim1 = get(ax1, 'XLim');
yLim1 = get(ax1, 'YLim');

% Ask the user to zoom in. Instead of pressing 
% enter, there could be a button to push in 
% a GUI
reply = input('Zoom in and press enter');

% Get the new, zoomed in axes
zoomedXLim = get(ax1, 'XLim');
zoomedYLim = get(ax1, 'YLim');

% get the data from the first axis and display
% it in the second axis.
data = getimage(ax1);
axes(ax2)
imagesc(data)

% set the second axis to the zoomed range
set(ax2, 'XLim', zoomedXLim)
set(ax2, 'YLim', zoomedYLim)
title('zoomed image')

% return the first axis to its original range.
set(ax1, 'XLim', xLim1)
set(ax1, 'YLim', yLim1)
axes(ax1)
title('original image')

结果图看起来像这样:

original image and zoomed image