為什麼c語言編寫s函式在閉環計算中就會錯誤?

時間 2021-06-03 20:37:49

1樓:李雅普諾夫不穩定

如果你的s函式沒有寫錯的話,個人認為可能是函式的取樣執行頻率設定得不夠理想,如果你的s函式使用的是離散型s函式,可以嘗試提高取樣執行頻率,另外其取樣時間應該是你的powergui的整數倍。至於然後就是可以嘗試在s函式前加乙個memory模組,將時序調整一下,迭代時時序存在一到兩個差異不會影響到實際結果,因為相對於模型的時間常數而言,一兩個最小步長實在太小太小,但是對於整個系統而言,卻起到了規範時序的目的,因為實際中各個模組的執行都有先後順序,不可能同時執行。

2樓:合行知

先嘗試開環對比,將你寫的模型與simulink自帶模型調至同引數,給相同輸入看輸出是不是完全相同,最好放大看看具體差別,如是否存在延時等。然後再看看simulink對狀態空間方程的解法是什麼方法,跟你的有沒有區別。

3樓:小號5708

非專業人士強答一波,土木的,以前用simulink模擬過動力微分方程。看題主的圖,感覺是計算時滯問題。

simulink的求解器是迭代求解的,用的離散時間片段去模擬乙個時間連續的過程。你這個s函式要是效率不高,又在閉環裡,必然會產生乙個資料傳遞上的延時,俗稱時滯。不知道題主是研究哪方面問題的,我只能從我的領域裡去描述這個現象,有時滯問題的話,表現在我們振動試驗裡,就像是給試驗物件附加了乙個並不存在的阻尼,振動波形會延時一段時間才開始有反應,波峰值會有改變,頻率影響好像不太大,這個阻尼基本是不符合瑞雷阻尼的。

解決方案是進行時滯補償,補償演算法和你的s函式有些關係,對於我們專業的人來說就太高階了些,需要控制界的大神講解原理。

既然Python是用c語言編寫的,為什麼速度比c慢那麼多

Python那些好用 簡單 安全 動態就是以速度慢為代價換來的。跟Python用什麼語言實現毫無關係。換個角度說 理論上,你用Python編寫乙個程式,執行的比c語言寫的還快也是可能的,快和慢跟實現語言沒關係。跟轉換成什麼樣子的演算法和資料提交給計算機識別執行有關係。 李展發 藏雲 我們管理學裡企業...

為什麼C語言要有 int 作為 main 函式的返回值,而不是 void?

main函式的返回值會被shell捕獲,並存到乙個環境變數中。在一些main loop結構的嵌入式系統中,main的返回值沒太有意義,因為嵌入式系統的軟體不會結束 上電後一直執行 或者在一些練習性質的程式中,我們也不太關注main函式的返回值。linux系統有個設計理念 乙個程式只做一件事情,並把它...

為什麼C語言中的這個myputs函式不能執行?

引數型別不對 變數型別是按右左法則來看的,從變數名往右看,看完再往左看,如此往復 char str,str右邊是,說明str是陣列,再往左看,是 說明陣列元素是指標 也就是str是個存放char指標的陣列 然後函式裡的引數比較特殊,陣列會退化成指標 所以這麼寫的str就是個char 而已,和傳進去的...