2016-08-17 402 views
0

我想繪製一個隨時間變化的圖形(想象它在風通過時繪製一根杆的形狀,所以我想每秒繪製一次形狀)。隨時間變化的Matlab繪圖

爲了避免x軸限制頻繁變化,我想將其修改爲極限(繪圖前我計算的最大值和最小值)。下面是我的代碼的示例:

for i=1:1:numberofrows 
    momentvaluesatinstant = momentvalues(i,:); 
    figure(1) 
    plot(momentvaluesatinstant,momentheader) 
    drawnow 
    title(sprintf('Moment profile along pile at time 0.2%f',time(i)')) 
    xlabel('Moment (kN.m)') 
    xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)]) 
    ylabel('Length of pile (m)') 
    delay(1); 
end 

雖然我指定x軸的極限,以被固定到我指定的值,積不斷變化取決於數據的限制被畫出?有什麼我失蹤?

+0

看看[我的答案](http://stackoverflow.com/a/39059154/2627163)爲更加緊湊和正確的方式來動畫在MATLAB中的東西。 – EBH

回答

0

想通了,需要添加xlim manual

0

我不知道爲什麼你需要xlim manual,但這裏是動畫你的數據更緊湊,更正確的方法:

% use 'figure', `plot` and all the constant parts of the figure only once, before the loop. 
figure(1) 
m = plot(momentvalues(1,:),momentheader); % plotting only step 1 
xlim([momentvalues(rowminmoment) momentvalues(rowmaxmoment)]) 
xlabel('Moment (kN.m)') 
ylabel('Length of pile (m)') 

% loop from step 2 ahead 
for k = 2:length(momentvalues) 
    pause(1); % use pause to set the delay between shots 
    % use 'set' to change the x values 
    set(m,'Xdata',momentvalues(k,:));  
    drawnow 
    title(sprintf('Moment profile along pile at time 0.2%f',k)) 
end