0

這可能是一個長鏡頭,但我問了一個問題有關轉換的統計數據的一個工具箱碼earlyier到C#意識到這只是一個龐大而漫長的過程,並沒有太多的辦法使其自動化(真的,我想要的,因爲我提供的參考文獻解釋了爲什麼手工操作非常困難,因爲我得到的評論在哪裏:爲什麼不嘗試轉換它並詢問你卡住的位置,這顯然是我的問題不知道!)多線程和多進口MATLAB文件

我一直在尋找這樣做的原因是因爲通過MATLAB完成進出口工作什麼的(K-手段,對大數據集的貝葉斯分類器)所需的處理時間長。所以我很好奇嘿,爲什麼不把代碼轉換成C#,並嘗試多線程和多處理,這可能提供了一種功能性的手段來減少處理時間。但顯然,它非常難以手動將所有的matlabs函數轉換爲C#以支持這一點。

所以我的問題是,如果我導入matlabs文件到C#是有可能讓他們使用/多線程中運行和多時尚或將導入的文件只需要運行,就像他們在MATLAB做什麼?

的原因(我覺得)它運行在MATLAB慢是這些功能或統計工具箱他們有的只是從具體多線程中受益:

MATHEMATICS 
Arrays and matrices 
• Basic information: ISFINITE, ISINF, ISNAN, MAX, MIN 
• Operators: +, -, .*, ./, .\, .^, *, ^, \ (MLDIVIDE),/(MRDIVIDE) 
• Array operations: PROD, SUM 
• Array manipulation: BSXFUN, SORT 


Linear algebra 
• Matrix Analysis: DET, RCOND 
• Linear Equations: CHOL, INV, LINSOLVE, LU, QR 
• Eigenvalues and singular values: EIG, HESS, SCHUR, SVD, QZ 

Elementary math 
• Trigonometric: ACOS, ACOSD, ACOSH, ASIN, ASIND, ASINH, ATAN, ATAND, ATANH, COS, COSD, COSH,HYPOT, SIN, SIND, SINH, TAN, TAND, TANH 
• Exponential: EXP, POW2, SQRT 
• Complex: ABS 
• Rounding and remainder: CEIL, FIX, FLOOR, MOD, REM, ROUND 

Special Functions 
• ERF, ERFC, ERFCINV, ERFCX, ERFINV, GAMMA, GAMMALN 

DATA ANALYSIS 
• CONV2, FILTER, FFT and IFFT of multiple columns or long vectors, FFTN, IFFTN 

所以我不會來確定如何或以何種方式當處理接近數萬條記錄時,我可能會減少處理時間,kmeans和bayes分類器在其處理時間(可以理解)上實在難以承受。

回答

1

這是不是你就能輕鬆做到。實際上我會說這是不可能的。

如果您嘗試它,你有以下的問題來處理:

  • 查找(半)自動化的方式來數學實驗室的功能轉換成C#
    這不存在我的知識。
  • 改變所得到的代碼進行多線程啓用
    要修改的數學算法,支持多線程是非常困難的,有時甚至是不可能的,因爲使用
  • 記住也請一些數學問題不縮放數據結構與處理器的數量,所以你可能甚至沒有得到你期望的好處。
+0

達姆,果然不出我所期待的。我發現這個博客[加快K均值(http://webcache.googleusercontent.com/search?q=cache:5lO3bF0UDFoJ:lingpipe-blog.com/2009/03/12/speeding-up-k-means-clustering-代數 - 稀疏矢量/ + matlab + kmeans +多線程&cd = 11&hl = en&ct = clnk&gl = uk&client = firefox-a)所以我可能會弄清楚他在這裏做了什麼。 – 2012-03-19 18:28:01

+0

感謝帖子。 – 2012-03-19 18:28:40

+0

@Garrith這篇文章描述瞭如何優化(數學)現有的算法,如果你有數學背景,這是明確的方法,因爲在那裏你通常可以得到比x2或x4更好的執行減少。你也可以很好地瞭解你的數據,通過這些信息,你通常可以更好地優化一個算法,但是這沒有任何與並行化相關的問題,例如 – ntziolis 2012-03-19 18:38:25