2015-02-05 65 views
0

Matlab初學者在這裏,我卡住了一些問題,Matlab文檔和其他帖子都不能幫助我。 我正在研究通過USB(陀螺儀,磁強計和加速器信號)接收傳感器信號的Level-2 Matlab S函數,我必須每200毫秒分析一次這些數據以獲取更高級別的任務。 起初我以爲我可以將Simulink模型的模擬時間設置爲開始時間0和停止時間10,並將塊的採樣時間設置爲0.2,直到block.SampleTimes = [0.2 0];但是在得到一些意想不到的行爲後,我發現仿真時間與Simulink中的clok時間不一樣:設置一個Level-2的Matlab S功能塊採樣時間到特定的時間間隔

仿真時間與時鐘時間不一樣。例如,運行10秒的模擬通常不需要10秒。總的仿真時間取決於諸如模型複雜度,求解器步長和計算機速度等因素。

我現在真的卡住,因爲我需要輸出的傳感器數據恰好每200ms,我沒有與Matlab或Simulink的所有任何經驗。 我希望我的問題足夠清楚,但如果需要,我會提供更多細節。 感謝您提前提供任何幫助。

回答

1

Simulink(和MATLAB)在Windows,Linux,OSX等上運行,它們不是實時操作系統。因此,MATLAB代碼或Simulink模型將永遠不會實時運行。確保Simulink模型實時執行的唯一方法是使用Simulink Coder和Embedded Coder從其生成C代碼,並在實時(嵌入式)平臺上運行生成的代碼。如上所述,如果您的Simulink模型比實時運行更快,您可以減慢運行「僞」實時,這將實時接近實時,因爲您可以實現非實時時間操作系統。有關更多詳細信息,請參閱Slowing Down Simulink

+0

謝謝減速Simulink鏈接對我的問題完美工作!你爲我節省了很多時間:) – Unfixable