我有一個讀取大矩陣並計算奇異值分解SVD的matlab函數。然而,我需要在Linux系統上運行該程序,而無需在每個新系統上安裝matlab,因此id希望將其轉換爲c源代碼。該代碼是真的很簡單:將matlab代碼轉換爲c
function singular(m)
load c:\som\matlab.txt
[U,S,V]=svd(matlab);
m = str2num(m);
U1=U(:,1:floor(sqrt(m)));
V1=V';
Vt=V1(1:floor(sqrt(m)),:);
S1=S(1:floor(sqrt(m)),1:floor(sqrt(m)));
matlab1=U1*S1*Vt;
matlab2=abs(matlab1);
save c:\som\matlab1.txt matlab1 -ascii
save c:\som\matlab2.txt matlab2 -ascii
是否必須是'c'?您可能會發現轉換爲Python更容易,numpy具有像語法一樣的matlab,並且在Linux上有很多。除非你已經知道C在哪種情況下,你應該發佈你試圖自己移植它。 – Dan
@丹我將要處理的矩陣將是巨大的,完成時間將不得不在10秒內,所以我需要它在c。 – Evan
你需要一個好的數學庫,比如http://www.netlib.org/clapack/才能得到'svd' – Simon