0

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);
4

1 に答える 1

0

結果はどのように異なりますか?Matlab の数値は C のdoubleデータ型よりも洗練されている可能性があります (可能性も高い)。これにより、結果間の精度に違いが生じる可能性があります。

于 2012-06-13T13:03:19.773 に答える