2013-11-04 60 views
3

在while循環中,我需要繪製兩個實體的位置(x,y)。也就是說,我需要做的就是生成一個有兩點的情節。我需要將繪圖縮放到特定的最大x和y值。另一個要求是,其中一個點需要有三個同心環放置在它周圍,每個環都有一個給定的半徑。此外,這一切都發生在一個循環中,因此我希望只打開一個繪圖窗口,並且不會打開整個窗口(每個循環迭代一個窗口)。MATLAB簡單點圖

基本上這裏就是我想要的僞代碼來實現(和失敗!):

-> Open new plot window, with a given x and y axis 
while (running) { 
    -> Clear the plot, so figure is nice and clean 
    -> Plot the two points 
    -> Plot the three circles around point A 
} 

我發現MATLAB的文檔中的幾個項目,但沒有一個單一的繪圖功能,似乎做我想做的,或有些情況下我無意中創建了只有一些數據的多個圖(即一個圖有點而另一個有圓)。

回答

3

這裏是一個示例代碼,你可以在你的while循環使用

x0=1; y0=4; 
x1=2; y1=3; % the x-y points 
r=[1 2 3]; % 3 radii of concentrating rings 
ang=0:0.01:2*pi; 
xc=cos(ang)'*r; 
yc=sin(ang)'*r; 

plot(x0,y0,'.',x1,y1,'.'); % plot the point A 
hold on 
plot(x1+xc,y1+yc); % plot the 3 circles 

% set the limits of the plots (though Matlab does it for you already) 
xlim([min([x0 x1])-max(r) max([x0 x1])+max(r)]); 
ylim([min([y0 y1])-max(r) max([y0 y1])+max(r)]); 

hold off 

你可以在一個循環這項工作很容易,讀MATLAB對如何做到這一點的文檔。

2

嘗試這樣:

r = [0.25 0.125 0.0625]; 
d = (1:360)/180 * pi; 
xy_circle = [cos(d)' sin(d)']; 
xy_circle_1 = r(1) * xy_circle; 
xy_circle_2 = r(2) * xy_circle; 
xy_circle_3 = r(3) * xy_circle; 

h_plot = plot(0, 0, '.k'); 
hold on 
h_circle_1 = plot(xy_circle_1(:, 1), xy_circle_1(:, 2), '-b'); 
h_circle_2 = plot(xy_circle_2(:, 1), xy_circle_2(:, 2), '-r'); 
h_circle_3 = plot(xy_circle_3(:, 1), xy_circle_3(:, 2), '-g'); 
axis equal 

for hh = 1:100 
    xy = rand(2, 2)/4 + 0.375; 
    xlim = [0 1]; 
    ylim = [0 1]; 
    set(h_plot, 'XData', xy(:, 1)); 
    set(h_plot, 'YData', xy(:, 2)); 

    set(gca, 'XLim', xlim) 
    set(gca, 'YLim', ylim) 

    set(h_circle_1, 'XData', xy_circle_1(:, 1) + xy(1, 1)); 
    set(h_circle_1, 'YData', xy_circle_1(:, 2) + xy(1, 2)); 
    set(h_circle_2, 'XData', xy_circle_2(:, 1) + xy(1, 1)); 
    set(h_circle_2, 'YData', xy_circle_2(:, 2) + xy(1, 2)); 
    set(h_circle_3, 'XData', xy_circle_3(:, 1) + xy(1, 1)); 
    set(h_circle_3, 'YData', xy_circle_3(:, 2) + xy(1, 2)); 

    pause(1) 
end 

如你願意,你可以更改參數。

0

您可以使用以下功能

figure;  %creates a figure 
hold on;  %overlays points and circles 
clf;   %clear the figure 

和使用兩種類型的標記(.o)各種大小的點和圓

plot(x,y, 'b.', 'MarkerSize', 4); 
plot(x,y, 'ro', 'MarkerSize', 10); 
plot(x,y, 'go', 'MarkerSize', 14); 
plot(x,y, 'bo', 'MarkerSize', 18);