2013-10-17 50 views
0

這是我第一次在這裏尋求幫助,我希望有人迴應。我希望發佈圖像以顯示我遇到的問題,但我需要至少10名代表才能完成。但我希望每個人都明白我的要求。使用Mathematica Manipulate函數繪製傳遞函數

我正在嘗試創建一個操作框來繪製一個傳遞函數,並在框中輸入類型,以便我可以輸入傳遞函數並指定x和y軸。但情節本身並沒有出現只有軸是

但如果我鍵入代碼「操縱」它的作品。

如果您嘗試在Mathematica上運行此功能,您可能會看到我遇到的問題。

我的mathematica代碼如下。

Manipulate[tfplot, 


{{tfplot1, 0, "Transfer Function="}}, 


Delimiter, 

{{fmin1, 10, "fmin = "}}, 
{{fmax1, 10^7, "fmax = "}}, 
{{ymin1, 1, "ymin = "}}, 
{{ymax1, 2*10^2, "ymax = "}}, 


Delimiter, 
Row[{ 

    Button["Plot", tfplot = LogLogPlot[Abs[tfplot2[2*Pi*I*f] /. {tfplot2[s_] -> tfplot1}], {f, fmin1, fmax1}, PlotPoints -> 1000, PlotRange -> {{fmin1, fmax1}, {ymin1, ymax1}}, PlotLabel -> "tf Plot"], ImageSize -> 80] 
}] 

, ControlPlacement -> {Left, Left, Left, Left, Left, Left, Left, Top}] 

tfplot3 = (3.333321894500285`*^6 (4.611679331492357`*^6 - 72057.48955456808` s - 4.138291871540356`*^9 s^3 - 3.889993968666704`*^9 s^4 + s^5))/(s^2 (2.606152799059127`*^18 + 4.6278171788297256`*^16 s + 1.0779994813998577`*^14 s^2 + 1.5235290577558628`*^8 s^3 + s^4)) 

LogLogPlot[Abs[tfplot4[2*Pi*I*f] /. {tfplot4[s_] -> tfplot3}], {f, 10, 10^7}, PlotPoints -> 1000, PlotRange -> {{10, 10^7}, {1, 2*10^2}}, PlotLabel -> "tf Plot"] 

謝謝。

Spiderfiq

+0

你應該拿這個去mathematica.stackexchange.com。有一件事,你沒有(不應該)需要劇情按鈕,如果你做對了,情節會自動更新。 (這就是manputlate的功能..)。儘管你的根本問題在於,將表達式作爲操縱變量鍵入似乎不起作用。 – agentp

+0

謝謝喬治的幫助。 –

+0

也許'SingularValuePlot'和'TransferFunctionModel'更直接? – Rojo

回答

0

編輯..拿2 ..

Manipulate[ 
     fplot = LogLogPlot[Abs[tfplotf /. s -> 2*Pi*I*f], {f, fmin1, fmax1}, 
      PlotPoints -> 1000, PlotRange -> {{fmin1, fmax1}, {ymin1, ymax1}}, 
      PlotLabel -> "tf Plot"], 
     {{tfplotf, (3.333321894500285`*^6 (4.611679331492357`*^6 - 
       72057.48955456808` s - 4.138291871540356`*^9 s^3 - 
       3.889993968666704`*^9 s^4 + 
       s^5))/(s^2 (2.606152799059127`*^18 + 
       4.6278171788297256`*^16 s + 1.0779994813998577`*^14 s^2 + 
       1.5235290577558628`*^8 s^3 + s^4)) 
      , "Transfer Function="}}, 
    Delimiter, 
     {{fmin1, 10, "fmin = "}}, 
     {{fmax1, 10^7, "fmax = "}}, 
     {{ymin1, 1, "ymin = "}}, 
     {{ymax1, 2*10^2, "ymax = "}}, 
    Delimiter, 
     ControlPlacement -> {Left, Left, Left, Left, Left, Left, Left, Top}] 
0

這是一些舊的代碼我已經從我的系統動力學與控制類躺在身邊。

Manipulate[tf = TransferFunctionModel[eq, s]; 

BodePlot[tf, GridLines -> Automatic, ImageSize -> 500, 
    FrameLabel -> {{{"magnitude (db)", None}, {None, 
     "Bode plot"}}, {{"phase(deg)", None}, {"Frequency (rad/sec)", 
     None}}}, 
    ScalingFunctions -> {{"Log10", "dB"}, {"Log10", "Degree"}}, 
    PlotRange -> {{{0.1, 100}, Automatic}, {{0.1, 100}, 
    Automatic}}], {eq, (5 s)/(s^2 + 4 s + 25)}] 

-Brian