2011-10-04 131 views
-3

我有一些數學算法在Matlab中實現。我已經在C++中實現了這些算法(我使用了Microsoft VS 2005)。當我將matlab代碼輸出與C++代碼輸出進行比較時,它與matlab輸出匹配的是98到99%。它不應該100%匹配嗎? matlab計算效率比C/C++好嗎?Matlab計算與'C/C++'計算..哪一個是有效的?

+0

你究竟做了什麼比較? – arne

+1

通過「效率」你的意思是更快?或更正確的精度明智? –

+1

有太多可以不同的事情來提供答案。實現中的輕微差異可能會產生不同的舍入錯誤,編譯器標誌可能允許對操作進行更寬鬆或更嚴格的評估(即折衷速度/準確性)庫中的算法可能會有完全不同的實現... –

回答

0

在MATLAB中也將有相應的編譯器,在這種情況下很難說 是matlab computation efficiency is better than C/C++

如果你的代碼是在這兩種情況下,相同的話,應該是相同的輸出。如果你發現它們之間存在一些差異,那麼它們應該是因爲它們的編譯器版本不同。

4

一般來說,不,Matlab不會因爲Matlab而產生更精確的結果。然而,有很多事情可能會有所作爲:

  1. 相同算法的不同實現可能已經寫入了不同數值穩定性的想法。
  2. C和C++編譯器通常允許您設置編譯標誌以進行快速數學運算,從而改變浮點數學行爲。
  3. 浮點數的輸出選項可能只是不同,使得結果看起來不同。
  4. Matlab和C版本可能使用了不同的浮點精度。