MATLAB

2016-11-23 1 views
2

내가 viscircles를 사용하는 기능에 원을 그릴 다음 그림과 같은 다른 원을 음모 나중에 그 기능에 돌아올려고을 여러 viscircles의 결과를 병합하는 방법 다음과 같습니다 :MATLAB

Multiple circles 다음에 대한 데이터를 얻을 수있는 프롬프트를 통해 다시 처음 viscircles, 제어 롤 음모를 꾸미고 후

figure 
center = [numberX numberY]; 
xlim([-0.1 10.1]) 
ylim([-0.1 10.1]) 
axis square 
artwork = viscircles(center,size,'Color',colorControl) 

기능 :

순간

, 난 단지 코드 줄을 사용하여 하나의 원을 그릴 수 있습니다이지만, 다시 플로팅 할 때 hold on을 사용해도 원래 viscircles이 덮어 쓰기됩니다. 모든 조언을 많이 주시면 감사하겠습니다.

+0

당신은 추가 질문을 편집 할 수 있습니다 더 많은 코드 라인? 그것은 다른 사람들이 뭔가를 제안하는 데 도움이 될 수 있습니다. – nahomyaja

+0

감사합니다. 이 코드는 새로운 서클을 새로 추가 할 때 유용했습니다. 나는이 질문에서 명확하게하지 않았지만, 실제로 여러 색상의 원을 그리려하고있다. 코드를 사용하면 새 서클이 추가 될 때마다 모든 서클이 새로운 색상이됩니다. 이 문제를 해결할 방법이 있습니까? 센터와 크기 변수에 사용 된 형식을 복사하려고 시도했지만 Matlab은 그것에 대해 너무 행복하지 않았습니다. –

+0

@LouisRichard 곧 내 게시물을 수정하겠습니다. 나는 지금 집에 없다. 다행히도 코드가 지금까지 작동했습니다! – rayryeng

답변

2

viscircles 기본적으로 그림이 플러시되고 제공 한 입력으로 지정된 원만 그려 지므로 hold on이 작동하지 않습니다.

대신 할 수있는 일은 을 데이터에 추가하여을 데이터에 추가하면 새 데이터를 묻는 메시지가 나타날 때마다 원래 데이터가 표시되고 새 원이 표시됩니다.

이와 같이 다음과 같이하십시오. 당신이 함수는 새로운 센터, 원 및 색상의 크기를 반환 getNewCenter라고 가지고 있고, 센터는 그 크기뿐만 아니라 표시 포함 행렬 것을 가정하면 :

centers = []; 
sizes = []; % Matrices that contain the centers and sizes 

while true % Keep iterating... 

    [numberX, numberY, size, colorControl] = getNewCenter; % Get new center, size and colour 

    % Add to the data 
    centers = [centers; numberX numberY]; 
    sizes = [sizes; size]; 

    % Plot the circles 
    xlim([-0.1 10.1]); 
    ylim([-0.1 10.1]); 
    axis square; 
    artwork = viscircles(centers, sizes, 'Color', colorControl); 
end