2016-03-23 37 views
1

我想將狀態空間模型轉換爲matlab RS2016a中的傳遞函數。我正在使用函數ss2tf(A,B,C,D),它根據文檔正是我所需要的。舉個例子,我使用2ss2tf在matlab中返回意外的值RS2016a

回答MATLAB回報的靜態增益:

>> ss2tf(0,0,0,2) 
ans = 
    2 0 

*編輯: [2,0]代表在S域傳遞函數2/0。以0爲分母的傳遞函數沒有太大意義,在這種情況下它是錯誤的。正確的答案是[2,1],它表示傳遞函數2/1而不是2/0。

* original: [2,0]表示s域中的傳遞函數2/0。在我看來,答案應該是[2,1],因此傳遞函數應該是2/1而不是2/0。

預期的答案:

>> ss2tf(0,0,0,2) 
ans = 
    2 1 

是否有此行爲的解釋?

+6

「在我看來」您的意思*在您的意見*。這是一個數學問題,而不是一個主觀問題。在我看來,'ss2tf'應該在晚餐時做一個好吃的披薩,但不幸的是它代表了一種傳遞函數的狀態空間。它的遺憾是它不會做我認爲應該做的事,但是,它確實是它應該做的事 –

+0

你是對的,「在我看來」並不是說我想說什麼的理想方式。如果功能能夠在晚餐時間烹飪比薩餅,這將是非常棒的;-) –

回答

4

ss2tf是一個有兩個輸出參數的函數,有兩個輸出參數調用它:

[b,a]=ss2tf(0,0,0,2) 

你只是讀取提名者和分母a丟失您呼叫的功能的方式。

+0

正確使用該功能時,輸出爲: '>> [NUM,DEN] = ss2tf(0,0,0,2) NUM = 2 0 DEN = 1 0' 這表示tf 2 * s/s相當於2/1,因此是正確的。我想知道爲什麼matlab不會自己簡化tf ... –

+0

有一些功能可以返回可預測大小的結果。 – Daniel