2015-04-16 3 views
1

je télécharge le code source scilab, je suis intéressé comment le conv2 fonctionne et veut le traduire en code C#, mais je ne sais pas ce que le sens de "C2F (ddot) "et comment cela fonctionne. si je transfère le "C2F (ddot)" dans le code c ou C# comment je devrais l'implémenter. voici une partie de code source dans scilabce que "C2F (ddot)" la signification dans scilab

extern double C2F(ddot)(int *n, double *A, int *iA, double *B, int *iB); 
/*--------------------------------------------------------------------------*/ 
void conv2_separable_R(double *R, int nR, double *C, int mC, double *A, int mA, int nA, double *Out, int mOut, int nOut, int edgM, int edgN, double *T) 
{ 
    int ai = 0, tj = 0, ci = 0, rj = 0; /*current index over A,T,C and R */ 
    int i = 0, j = 0; /* loop variables*/ 
    int l = 0; 
    int one = 1, minusone = -1; 

    for (i = 0; i < mOut; i++) 
    { 
     /*Compute the 1-D conv A(i,:) and C in T */ 
     ai = Max(0, i - edgM) ; 
     ci = mC - 1 - Max(0, edgM - i); 
     l = Min(ci + 1, mA - ai); 
     for (j = 0; j < nA; j++) 
     { 
      T[j] = C2F(ddot)(&l, A + ai + mA * j, &one, C + ci - l + 1, &minusone); 
     } 
     /*1-D convolution of T and R */ 
     for (j = 0; j < nOut; j++) 
     { 
      rj = nR - 1 - Max(0, edgN - j); 
      tj = Max(0, j - edgN) ; 
      l = Min(rj + 1, nA - tj); 
      Out[i + j * mOut] = C2F(ddot)(&l, T + tj, &one, R + rj - l + 1, &minusone); 
     } 
    } 
} 

si je veux Tranform le code suivant: » T [j] = C2F (DDOT) (& l, A + ai + mA * j, & une, C + ci-l + 1, & minusone); " en c ou C#, comment je devrais faire?

Répondre

0

Dans les sources de Scilab, C2F est une macro utilisée pour appeler la fonction Fortran de C.

Il est déclaré in machine.h.

En fait, ce code appelle probablement the Blass ddot function.

Qu'il, le produit scalaire de deux vecteurs est fait en Fortran ...

+0

grâce à votre aide – 07012220

+0

Vous pouvez upvote/accepter ma réponse à moi merci :) – Orace