回覆列表
  • 1 # io6684862

    MATLAB Function Block 在執行Simulink Model之前會生成C/C++程式碼,然後編譯成二進位制檔案在模擬的時候來執行 (R2015a之後這個過程被簡化為JIT (just-in-time))。 Interpreted MATLAB Function Block採用的是MATLAB本身的引擎來解釋執行對應的MATLAB函式。從模擬角度講:兩者的區別不是太大。當然,Interpreted MATLAB Function Block的執行速度會比較穩定,MATLAB Function Block因為會產生二進位制檔案,在第一次執行前需要進行code generation和compilation, 之後每次支援速度都會相對比較快。從設定角度講:MATLAB Function Block裡可以設定每個輸入輸出變數的型別,大小,維數等屬性。這些都會被用於Code generation和模擬. Interpreted MATLAB Function Block不需要擔心這些步驟,因此設定上會更簡單一些, 但是侷限是不支援多維訊號,不支援可變維數的訊號,不支援zero-crossing detection,不支援code generation.取樣時間必須從驅動模組繼承。關於編譯器: Interpreted MATLAB Function Block是解釋執行,所以不需要使用編譯器,也不會生成任何檔案。使用MATLAB Function Block要求系統安裝至少一個編譯器,否則模擬時可能會出現一些錯誤資訊。下面的連結裡能找到各個版本支援的編譯器Support - Supported and Compatible Compilers for R2015b如果是在Windows環境下,可以使用免費的SDK關於Code generation: 如果最終需要把Simulink模型生成C程式碼或者二進位制/可執行檔案,那麼應該選擇MATLAB Function Block。因為Interpreted MATLAB Function Block不支援code generation。最後請注意,在使用MATLAB Function Block時,不是所有的MATLAB函式能自動轉換成C/C++程式碼。具體見如下文件。Functions and Objects Supported for C and C++ Code Generation一旦需要在MATLAB Function Block裡使用不在這個列表裡的函式,那麼只能採用coder.extrinsic來宣告它們,讓Simulink對它們進行解釋執行。但是在這種情況下就不能把模型自動編譯成可獨立執行的程式了。

  • 中秋節和大豐收的關聯?
  • 手機掉水裡了,馬上就撈出來,在水裡也沒有冒泡,也沒有關機。請問應該怎麼處理?