2013-02-25 5 views
0

함수를 반복적으로 호출하고 모두 동일한 플롯에 그려야합니다. 내가 만든 핸들러를 내 함수를 호출하기 전에다른 하위 함수에 대해 동일한 플롯 사용

??? 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 

해결책이 있습니까? 어떻게 객체 형식에서 내가 호출 한 함수를 플롯 할 수 있습니까?

답변

0

라인 6의 clf은 그림을 지우고 그래픽 출력으로 사용할 라인을 제거합니다.

해당 줄을 제거하고 작동하는지 확인하십시오.

0

hold all을 사용해보세요. 기존 행을 지우지 않고 그림에서 새 행 plot을 사용할 수 있습니다.

figure 
hold all 
triangle(...) 

내부에 플롯을 호출하면됩니다.

plot(x, y) 
plot(x, z) 
관련 문제