2
我需要在matlab中使用非常長的字符串定義一個變量,讓我們稱它爲S. S包含符號計算的結果,並且我想在我的matlab代碼中使用該結果。 S太長而無法直接複製到代碼中,所以我只是從文件中讀取它。我可以使用eval評估S中的表達式,它可以正常工作,但它確實很慢(大約需要15秒)。我需要獲取S值的變化範圍內的不同值,所以我需要一個更快的方法來做到這一點。任何想法都會很棒。matlab替代eval的大字符串
我需要在matlab中使用非常長的字符串定義一個變量,讓我們稱它爲S. S包含符號計算的結果,並且我想在我的matlab代碼中使用該結果。 S太長而無法直接複製到代碼中,所以我只是從文件中讀取它。我可以使用eval評估S中的表達式,它可以正常工作,但它確實很慢(大約需要15秒)。我需要獲取S值的變化範圍內的不同值,所以我需要一個更快的方法來做到這一點。任何想法都會很棒。matlab替代eval的大字符串
根據你的主要目標你可以做幾件事情。
爲了提高性能,你可以實現的eval作爲一個MEX功能。 另外,看看這個: http://www.mathworks.se/help/matlab/matlab_prog/string-evaluation.html – PurpleAlien 2013-05-01 21:21:08
是的,當我試圖找出這一點,但我沒看到那個頁面,但我沒有認爲任何這些情況都適用於我正在嘗試做的事情。你能解釋一下MEX功能是什麼嗎?謝謝。 – user1504686 2013-05-02 20:19:56
MEX函數是像C/C++或Fortran中的eval()這樣的函數的本地代碼實現,因此可以進行高度優化。你的主要問題是eval()真的很慢,所以你必須找到一種方法來爲你的特定需求編寫一個優化版本,然後在Matlab中使用這個版本。 – PurpleAlien 2013-05-02 22:56:19