2011-12-26 94 views
2

我完全是Matlab中的新手 我想問,當我們在Matlab軟件或IDE中編寫程序並用 .m(點m)文件保存並編譯並執行它時,那麼.m(點m)文件被轉換成哪個文件?我想知道這一點,因爲我聽說matlab是平臺獨立的,我做了谷歌這個,但我得到轉換matlab文件到C,C++等 對不起,這個愚蠢的問題,並提前感謝。編譯後的Matlab代碼

+2

我建議你閱讀文檔:http://www.mathworks.co.uk/help/toolbox/compiler/index.html。 – 2011-12-26 14:03:21

回答

7

Matlab是interpreted language。所以在大多數情況下,沒有持久的中間形式。然而,有被加密的中間形式稱爲pcode和也存在MATLAB編譯器和編碼器MATLAB它提供代碼在其它高級語言(如C)

編輯: pcode不會自動生成,並應該是平臺/版本獨立。但它的主要目的是加密代碼,而不是編譯它(儘管它做了一些部分編譯)。要使用pcode,您仍需要安裝MATLAB環境,因此在很多方面它的行爲與解釋代碼相似。

但是從你的後續問題我想你不太明白MATLAB的工作原理。代碼被解釋(儘管有一點即時編譯),所以不需要持久的中間代碼文件:表示代碼的實際數據結構由MATLAB維護。與編譯語言相反,開發週期類似於「編寫代碼,編譯&鏈接,執行」,編譯(實際:解釋)步驟是執行的一部分,因此最終將以「編寫代碼,執行「在大多數情況下。

只是爲了讓您對編譯器和解釋器之間的差異有一個直觀的理解。編譯器將高級語言轉換爲低級語言(假設計算機可以執行的機器代碼)。之後,編譯代碼(很可能存儲在一個文件中)由您的計算機執行。另一方面,解釋程序會逐個解釋您的高級代碼,在程序運行期間確定與高級代碼對應的機器代碼,並立即執行該機器代碼。因此,沒有必要讓您的整個程序可以使用機器代碼(因此在很多情況下,解釋器不會存儲整個機器代碼,因爲這只是浪費精力和空間)。

你可以像解釋代碼一樣或多或少地看待解釋:當你嘗試手動確定某些代碼的輸出時,你需要逐行跟蹤計算並跟蹤結果。您通常不會將整個代碼翻譯成不同的格式,然後執行該代碼。由於您不需要完整地翻譯代碼,因此不需要持久地存儲中間表單。

正如我前面所說:你可以使用其他工具,如MATLAB coder到您的MATLAB代碼轉換爲其他高語言如C/C++,或者您可以使用MATLAB compiler編譯代碼到取決於一些運行可執行形式庫。但是這些僅用於非常特定的情況(例如,當您需要在沒有MATLAB的計算機/嵌入式設備上部署MATLAB應用程序時,當您需要提高代碼的性能時,...)

說明: My關於編譯器和解釋器的解釋是對原型解釋器和編譯器的快速比較。許多真實案例介於兩者之間,例如Java通常編譯爲(JVM)字節碼,然後由JVM解釋,並且可以對.NET語言及其CLR進行類似的描述。

+0

謝謝Egon .......但我想問一下,當我們執行我們的.m(點m)文件時,這個'p'代碼會自動生成,或者我們必須明確地執行。 – 2011-12-28 09:09:50

+0

'p'代碼不會自動生成,但我建議您遠離'pcode'作爲初學者。如果我上面的解釋不夠清楚,你可能會想看看編譯和解釋語言之間的區別。 – Egon 2011-12-28 12:25:50

+0

感謝Egon的詳細解釋。這真的很有幫助。 – 2011-12-28 13:16:14

1

由於MATLAB是一個解釋器,您可以編寫代碼,只需從IDE執行它,無需編譯。

如果您想部署您的程序,您可以使用MATLAB編譯器創建一個獨立的可執行文件或共享庫,您可以在C++項目中使用它。在Windows上,MATLAB代碼將分別編譯爲.EXE文件或.DLL文件。

+0

謝謝Victor May ........... – 2011-12-28 09:10:19