2014-04-29 57 views
3

我正在繪製一個函數dx/dt的動畫,並且已經設置了座標軸,但是當動畫運行時,座標軸會根據繪圖動態變化。我該如何解決這個問題?當我在Matlab中繪製動畫時,如何防止軸動態變化?

clear all; 

%Equation variables: 
s = 0; 
r = 0.4; 

%axes limits: 
xmin = 0; 
xmax = 2; 
ymin = -.05; 
ymax = .2; 

%s limits: 
smin = 0; 
smax = 1; 
s_steps = 100; 

%our x-space: 
x = linspace(xmin, xmax, 100); 

%Let's try different s-values and plot as an animation: 
for s=linspace(smin, smax, s_steps) 
    counter = counter + 1; 

    %dx/dt: 
    dxdt = s - r.*x + (x.^2)./(1 + x.^2); 

    figure(1),  
    subplot(2,1,1) 
    axis([xmin xmax ymin ymax]);  
    plot(x, dxdt); 


    title(strcat('S-value:', num2str(s))); 

    hold on; 
    y1 = line([0 0], [ymin ymax], 'linewidth', 1, 'color', [0.5, 0.5, 0.5], 'linestyle', '--'); 
    x1 = line([xmin xmax], [0 0], 'linewidth', 1, 'color', [0.5, 0.5, 0.5], 'linestyle', '--'); 
    hold off; 
end 

回答

3

簡單地顛倒「axis」命令和「plot」命令的順序。在「繪圖」之前使用「軸」時,「繪圖」會用默認軸覆蓋「軸」命令。切換這兩條線可以解決這個問題。

但是,如果你想動畫的個別點,還有一個「設置」命令,它爲純動畫創造奇蹟。檢查了這一點:

% data (Lissajous curves) 
t = linspace(0,2*pi,50) ; 
x = 2 * sin(3*t) ; 
y = 3 * sin(4*t) ; 

figure % force view 
h = plot(x(1),y(1),'b-',x(1),y(1),'ro') ; 
pause(0.5) ; 
axis([-3 3 -4 14]) ; % specify a strange axis, that is not changed 

for ii=2:numel(x), 
    % update plots 
    set(h(1),'xdata',x(1:ii),'ydata',y(1:ii)) ; 
    set(h(2),'xdata',x(ii),'ydata',y(ii)) ; 
    pause(0.1) ; drawnow ; % visibility 
end 

http://www.mathworks.com/matlabcentral/newsreader/view_thread/270439

+0

我想我要補充的是,除了劇情,這是不變的情況下包含「矩形」和「補」,甚至是「軸等於」使用「軸命令([ xmin xmax ymin ymax])「之後!謝謝:) – kiyarash

+0

如果你願意,你可以編輯我的答案。 – Blairg23

相關問題