Matlab - 如何使图形电流?如何使轴电流?

时间:2012-10-08 04:43:59

标签: matlab matlab-figure

如果f是数字句柄,我想在其上使用plot3(..),就像我使用plot(..)一样,但这不起作用:

>> plot3(f, t, real(Y), imag(Y))
Error using plot3
Vectors must be the same lengths.

然后我发现这样做的方法是:

  1. 首先制作相关数字 current

  2. 然后使用plot3(..)功能。

  3. 我可以找到当前数字使用gcf的内容,但如何使数字显示为当前(通过其句柄)?

4 个答案:

答案 0 :(得分:26)

此方法有我个人的偏好:

set(0, 'currentfigure', f);  %# for figures
set(f, 'currentaxes', axs);  %# for axes with handle axs on figure f

因为这些命令是他们自己的文档。我找到了

figure(f)
在第一次阅读时会感到困惑 - 你是否创造了一个新的形象?或仅仅使一个现有的活跃? - >需要更多地阅读上下文。

答案 1 :(得分:8)

实际上就像将f反馈给figure(..)命令一样简单:

figure(f)    %Makes the figure current.

另外,如果我做了这样的事情:

f = figure('IntegerHandle','off');    % With unique, non-reusable handle.
top = subplot(2, 1, 1);
bot = subplot(2, 1, 2);

然后我可以通过发出如下命令来使 topbottom成为当前命令:

subplot(top);

这也有效:

axes(top);

但是两种类型的句柄不能混合:axes(..)subplot(..)处理轴句柄,而figure(..)适用于图形句柄。

答案 2 :(得分:4)

虽然其他人已经为您提供了您所要求的(如何制作轴或计算当前轴)。处理此问题的首选方法是在调用plot3时明确指定绘图的父级。

如果查看documentation,您将看到可以将父轴指定为函数的第一个参数。如果您在示例中看起来像是尝试执行此操作,但是您提供了数字而非的句柄。

f = figure()
ax = axes('Parent', f)
im = plot3(ax, X, Y, Z);

或者,我更喜欢显式解决方案

im = plot3(X, Y, Z, 'Parent', ax)

关于父级的显式参数/值规范的好处是它被所有图形对象接受。像plotplot3这样的函数实际上是包含line功能的辅助函数,并允许首先传递父项的约定。无论您是使用更高级别的功能(plotplot3imshow)还是更低级别的对象(line,都可以广泛接受参数/值方法,image等。)

这里的两个好处是你删除了MATLAB的开销,试图弄清楚你的绘图放在哪里,它也阻止了MATLAB必须改变当前显示的图形,强制重新渲染,这是MATLAB的一个最慢的任务。

答案 3 :(得分:0)

给出句柄名称,给你一个小例子

  f1 = figure;
  imshow(image1);
  f2 = figure;
  imshow(image2);
  % edit image 1
  figure(f1);
  text(2,3,'done');