2015-02-08 153 views
2

我想在某個「x」(標量)值處繪製一條線,因此每秒都會繪製一條具有特定值的垂直線。我知道,畫一條垂直線(不考慮時間)的一種方式是聲明就像一個向量:在特定時間繪製垂直線

y=0:0.01:5; 

或類似的東西:

y=3:0.01:6; 

,寫plot(x,y);

另外,我已經完成了使用「暫停」參數的「動畫」圖,但在這種情況下我不知道該怎麼做。謝謝你的幫助。

+0

'x'是什麼?我如何複製過去的例子,看看它的工作? – 2017-10-14 01:30:17

回答

3

我建議的另一種方法是將plothold on組合使用。與plot,你只能指定兩點,其中每個點具有相同的x值,但y值可以更改爲任何你想要的。當您使用plot繪製點時,默認行爲是在點之間繪製一條線。如果我們指定具有相同座標的兩個點,但座標不同,我們將在這些點之間繪製垂直線。

例如,假設你想擁有每一個「第二」有一條垂直線,我們可以做這樣的事情:

ystart = [-1 -2 -3 -1 -2 -3]; 
yend = [1 2 3 1 2 3]; 

figure; hold on; 
for idx = 1 : numel(ystart) 
    plot([idx idx], [ystart(idx) yend(idx)]); 
end 

這就是我們得到:

enter image description here

我們定義了6個元素的兩個數組,其中ystart表示起始點y點,而yend表示結束點y。我們產生一個新數字,使用hold on在同一圖表上繪製多條線,然後使用for循環與plot,以便我們在兩點之間繪製一條線:(x,y) = (idx, ystart(idx))(x,y) = (idx, yend(idx))idx變爲1-6。很明顯,你可以通過指定另一個數組改變x值正在策劃之中,其中的位置...叫它x

x = 0:2:10; %// Time values 
ystart = [-1 -2 -3 -1 -2 -3]; 
yend = [1 2 3 1 2 3]; 

figure; hold on; 
for idx = 1 : numel(ystart) 
    plot([x(idx) x(idx)], [ystart(idx) yend(idx)]); 
end 

在這裏,我們將汲取x = 0開始垂直線最多爲x = 10,步長爲2.結果基本相同,但x的值將不同,以及垂直線的繪製位置。

+0

好吧,我會試試。謝謝。 – user3587175 2015-02-08 09:57:30

+0

當然,讓我知道。如果它有效,我不介意你接受我的答案。祝你好運! – rayryeng 2015-02-08 10:02:36

+1

在for循環中添加「暫停(1)」行使其按照我的意願工作。謝謝,我確定我會這樣做。 – user3587175 2015-02-08 10:50:00

2

有幾種方法可以在Matlab中繪製垂直線。最簡單的建議是line功能:

線(X,Y)將在向量X和Y定義當前 軸線。如果X和Y是相同大小的矩陣,則每行將繪製一行 。

根據需要調用此次數。

h=line(X,Y) 

會給你行

另一種方式是性能

X= X0*(Y./Y) 

然後

plot(X,Y) 

將繪製在點X0垂直線。你可以做的另一件事是使用上面的line函數從點(X0, min(Y))到點(X0, max(Y))畫線,這是最優雅的解決方案。如果您正在嘗試製作電影,則需要使用h=line(X,Y)訪問此行的屬性。要將該行移動到新的位置,您必須通過調用set(h, Property, value)來設置該行的屬性。例如在你的電影中,你需要將它移動到新的位置,以便設置該屬性。這樣,通過最小的數據更改,您可以移動一條線或顯示其加速度。