我有一个读取大矩阵并计算奇异值分解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