Matlab生成的C代码不能正常工作

Matlab生成的C代码不能正常工作,c,xcode,matlab,matlab-deployment,equation-solving,C,Xcode,Matlab,Matlab Deployment,Equation Solving,我想在iOS应用程序中用Matlab解一个方程(A*x=b)。我生成了C源文件并将它们添加到Xcode中。奇怪的是,对于相同的(A,b),我在Matlab和Xcode中得到了不同的结果 我使用默认设置。有什么建议吗 Matlab: %#codegen function X = solveEquation(A, B) X = linsolve(A,B); end Xcode: double* A_data = malloc(num * num * sizeof(double));

我想在iOS应用程序中用Matlab解一个方程(A*x=b)。我生成了C源文件并将它们添加到Xcode中。奇怪的是,对于相同的(A,b),我在Matlab和Xcode中得到了不同的结果

我使用默认设置。有什么建议吗

Matlab:

%#codegen
function X = solveEquation(A, B)
    X = linsolve(A,B);
end
Xcode:

double* A_data = malloc(num * num * sizeof(double));     
double* B_data = malloc(num * sizeof(double));
for (int i=0; i<num; i++) {
    for (int j=0; j<num; j++) {
        double sum = 0.0;
        for (int k=0; k<9; k++) {
            double diff = powf(A[i][k]-A[j][k],2); 
            sum += diff;
        }
        A_data[j*num+i] = exp(sum/-2);
    }
    B_data[i] = A[i][9];
}

int A_sizes[] = {num, num};
int B_sizes[] = {num, 1};
double* X_data = malloc(num * sizeof(double));
int X_sizes[] = {num, 1};
solveEquation(A_data, A_sizes, B_data, B_sizes, X_data, X_sizes);
double*A_data=malloc(num*num*sizeof(double));
double*B_data=malloc(num*sizeof(double));

对于(int i=0;i结果有什么不同?这是可能的(甚至可能的)Matlab的数字比C的
double数据类型更复杂。这可能会导致结果之间的精度差异。

你得到了什么结果?首先验证你的A和B输入在两侧都是相同的。不要忘了Matlab索引列major和C索引行major。另外,
powf
是双精度函数错误。请使用
pow()
,或者更好的方法是自己将它们相乘。
B_data[i]=A[i][9];
索引超出了A的(初始化)大小。(希望是:9