【问题标题】:Use the same plot for different subfunctions对不同的子功能使用相同的图
【发布时间】:2013-02-25 20:27:00
【问题描述】:

我正在递归调用一个函数,我希望它们都绘制在同一个图中。当我尝试创建一个处理程序并使用参数传递它时,我收到以下错误:

??? Error using ==> set Invalid handle object.

Error in ==> triangle at 23
set(h, 'xdata', [x1,x3], 'ydata', [y1,y3]);

在调用我的函数之前,我已经创建了一个处理程序并设置了我的偏好:

h = plot([0,1],[0,0]);
set(h, 'erasemode', 'none');
triangle(0,0,1,0,10,0,h)

这是我的功能:

function triangle(x1,y1,x2,y2, deepth , n,h)
%Paints a equilateral triangle for two given Points
if depth > n

    shg
    clf reset

    %vector
    v_12 = [x2-x1;y2-y1];

    %rotate vector
    g_uz = [0.5,-sqrt(3)/2;sqrt(3)/2, 0.5];
    p = g_uz * v_12;
    x3 = p(1) + x1;
    y3 = p(2) + y1;


    axis([-10 10 -10 10]);
    axis off

    drawnow

    set(h, 'xdata', [x1,x3], 'ydata', [y1,y3]);
    drawnow

    set(h, 'xdata', [x2,x3], 'ydata', [y2,y3]);
    drawnow

    v_13 = [x3-x1,y3-y1];
    v_23 = [x3-x2,y3-y2];

    % 1-3 triangle
    triangle(x1+v_13(1)/3,y1 + v_13(1)/3, x1+ 2*v_13(1)/3,y1 + 2*v_13(1)/3, tiefe, n+1 );
end

您知道任何解决方案吗?如何在对象中绘制我调用的函数?

【问题讨论】:

    标签: function matlab plot matlab-figure


    【解决方案1】:

    第 6 行上的 clf 清除图形,删除要用作图形输出的行。

    删除该行,看看它是否有效。

    【讨论】:

      【解决方案2】:

      尝试使用hold all。它可以让您在图中plot 新行而不清除现有行。

      figure
      hold all
      triangle(...)
      

      在你的函数中调用 plot。

      plot(x, y)
      plot(x, z)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-08
        • 2021-03-18
        • 2010-10-29
        • 2020-03-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多