2011-04-14 58 views
0

我想繪製一個機器人關節的位置,速度和加速度圖,但我不知道如何繪製它。這是我的等式:如何通過使用循環及時繪製圖表?

(position) 
for 0<=t<=tblend, 
y = theta1s+((0.5.*acc1).*(t^2)); 
for tblend<t<tf-tblend, 
y = -195.21+(52.08.*t); 
for tf-tblend<t<=tf, 
y = 20-15.*((5-a)^2); 

我必須使用什麼命令來繪製此圖?如果可能的話,我也想顯示公式y

+0

[Matlab:my command not function(機器人關節圖的繪圖位置)的可能重複。](http://stackoverflow.com/questions/5670946/matlabmy-command-not-functionplotting-position-of-robot-聯合圖) – abcd 2011-04-15 05:16:15

回答

0

首先創建牛逼值假設一個步長(在這裏我挑0.1)和最終值的網格你提到所謂的TF:

t = 0:0.1:tf; 

然後使用邏輯索引,以不同的功能應用到該網格的不同區域值:

y = (theta1s+((0.5.*acc1).*(t^2))).*(0 <= t).*(t<=tblend) + ... 
(-195.21+(52.08.*t)).*(tblend<t).*(t<tf-tblend) + ... 
(20-15.*((5-a)^2)).*(tf-tblend<t).*(t<=tf); 

這將通過由邏輯每個差塊乘以應用函數y的分段定義僅在其中它適用和0別處的區域是1。然後一個簡單的

plot(t,y) 

會告訴你的情節。爲了打印這個功能,你需要使用Matlab的本地LaTeX語法來格式化你的繪圖窗口的標題。查找並使用分段函數的LaTeX命令\ begin {cases} ... \ end {cases}。您可以將大部分直接傳遞給title()命令。

另一種解決方案,如果您有信號處理工具箱,你可以使用內置的

heaviside(t) 

功能。適當地改變分段函數的新分段的每個左端點的t值,然後爲分段的每個右端點減去和對應的heaviside()項。如果你沒有內置的heaviside()函數,你可以在Matlab中心文件交換中輕鬆找到第三方實現。