2014-05-09 57 views
1

在Modelica中,我有一個變量x,它依賴於(a,b,c)。對於給定的仿真時間,其繪圖(x,時間)看起來平滑且連續。我希望得到這條曲線的斜率,而不必明確區分der(x),因爲我得到關於a,b或c的偏導數的錯誤。這可能嗎?換句話說,我想要最終輸出的斜率,而不必區分它背後的內容。變量的時間導數作爲信號而不是函數

+0

考慮添加一些換行符,並使用編輯器的「代碼」格式選項使其更具可讀性。 – DaveParsons

回答

2

Modelica.Blocks.Continuous.Derivative x_dot(開始= 1)這提供了衍生物的近似。我給了x作爲輸入,並得到了x_dot.y作爲衍生物,沒有任何問題。

1

在Modelica本身中,您不能這樣做,因爲您無權訪問集成商,以前的時間或類似內容。您可以通過使用採樣得到的Modelica代碼的近似,但稍有變化的模擬結果,並可能是一個性能瓶頸:

model M Real signal = time; Real approx_der(start=0); discrete Real x(start=0); discrete Real t(start=0); equation when sample(0.1,0.1) then x = signal; t = time; approx_der = (x-pre(x))/(t-pre(t)); end when; end M;

這是比較容易簡單地使用後處理。加載在八度,MATLAB或類似的結果文件並繪製近似衍生物: plot(time(2:length(time)),diff(y) ./ diff(time))

+0

謝謝你的回答,實際上我需要實時的斜率值。我使用了'Modelica.Blocks.Continuous.Derivative x_dot(start = 1);'。我給了x作爲一個輸入,並得到了'x_dot.y'作爲衍生物,沒有任何問題。 – leoo321