Pseudo-Beobachtungen



  • Hallo,

    im Rahmen meiner DA habe ich eine Simulation in R geschrieben, die zu extrem langen Laufzeiten führt. Jetzt will ich die Schleifen in C schreiben. Ein integrieren des C Codes in R ist möglich. Bei einer Funktion zur Erzeugung von Pseudo-Beobachtungen erhalte ich folgenden Fehler:

    error: cannot convert 'double' to 'double**' for argument '1' to void pseudo_obs(double**,int*,double*)

    für folgenden Code

    void pseudo_obs(double *x[2],int *nx,double *erg)
    {
    double *temp, temp2[*nx];
    int i, j, v1, v2, vv;
    *temp = 0;
    for (i=0; i < *nx; i++)
    {
    for(j=0; j < *nx;j++)
    {
    v1 = (x[i][1]<=x[j][1])? 1 : 0;
    v2 = (x[i][2]<=x[j][2])? 1 : 0;
    if (v1 == 1 && v2 == 1)
    {
    vv = 1;
    }
    else vv= 0;
    *temp += vv;
    }

    temp2[j] = *temp;
    }
    }

    int main (int argc, char * const argv[]) {
    double t = 5;
    double a[] = {1,3,10};
    int n = 3;
    double e = 0;

    double b;

    ecdf(&t, a, &n, &e);
    pseudo_obs(b, &n, &a);
    printf("Ergebnis: %f", e);
    return 0;
    }

    Ich bin blutiger Anfänger in C und kann überhaupt nix mit der Fehlermeldung anfangen. Ich wäre auch schon dankbar, wenn mir jmd. entsprechende Textstellen in der Literatur empfehlen könnte. Es scheint ja ein Problem zu sein, mit der übergabe von mehrdimensionalen Arrays.

    Vielen Dank

    dominikadoo



  • dominikadoo schrieb:

    error: cannot convert 'double' to 'double**' for argument '1' to void pseudo_obs(double**,int*,double*)

    void pseudo_obs(double *x[2],int *nx,double *erg)

    double b;

    pseudo_obs(b, &n, &a);

    Du übergibst ein double, die Funktion erwartet ein Array von double* (also einen double**).



  • Vielen Dank für die super schnelle Antwort!

    Kannst du mir ein Beispiel geben für ein double**?

    Ich habe es ja schon mit double b[2] versucht, aber das geht auch nicht.

    Viele Grüße



  • int main (int argc, char * const argv[]) {
    double t = 5;
    double a[] = {1,3,10};
    int n = 3;
    double e = 0;
    
    double[] b;
    
    ecdf(&t, a, &n, &e);
    pseudo_obs(&b, &n, &a);
    printf("Ergebnis: %f", e);
    return 0;
    }
    


  • vielen Dank, aber die Änderung
    double[] b;

    führt zu folgendem Fehler:

    error: expected unqualified -id before '[' token

    das ist alles außerhalb meiner momentanen Programmierkenntnise.

    Grüße


Anmelden zum Antworten