亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? kriging.c

?? kriging 插值算法C程序, written by Chao-yi Lang
?? C
字號:
/*                   Kriging Interpolator                                            written by Chao-yi Lang                     July, 1995                     lang@cs.cornell.edu*/ #include <dx/dx.h>#include <stdio.h>#include <string.h>#include <math.h>char krig_fn[]="_krig.dx";char vari_fn[]="_vari.dx";float *D,*weight;float result[2];float kriging_result(float *V, float i_f, float j_f, int dim, float *pos ,        float *Z_s, int mode,int a, float c0, float c1);int kriging(int *range, int mode, int item, float *Z_s, int *resol,            float *pos, float c0, float c1,float a);int *get_range(float *pos, int *range, int item);Error m_Kriging(Object *in, Object *out){    Array a1,a2,a3,a4;    Object o = NULL;    float x,*pos,*value,nugget,range_a,sill;    int i, *resol_a, *range, range_default[4];    char *method_a;    char method_default[] = "exponential";        int item, n, n1, rank, rank1, shape[3], shape1[3], method;    Category category;    Type type;    /* copy the structure of in[0] */    if (!in[0])  {          DXSetError(ERROR_BAD_PARAMETER, "missing data parameter");          goto error;    }    if ( DXGetObjectClass(in[0]) != CLASS_FIELD) {          DXSetError(ERROR_BAD_PARAMETER, "data is not a field");          goto error;    }    a1 = (Array) DXGetComponentValue((Field) in[0], "data");    if (!a1) {          DXSetError(ERROR_MISSING_DATA, "field has no data");          return ERROR;    }    DXGetArrayInfo(a1, &n, &type, &category, &rank, shape);    value = (float *) DXGetArrayData(a1);    a1 = (Array) DXGetComponentValue((Field) in[0], "positions");    if (!a1) {          DXSetError(ERROR_MISSING_DATA, "field has no positions");          return ERROR;    }    DXGetArrayInfo(a1, &n1, &type, &category, &rank1, shape1);    if ((rank1==1) && (shape1[0]==2)) {          pos = (float *) DXGetArrayData(a1);    }    else {        DXSetError(ERROR_MISSING_DATA, "input field must be rank:1 shape:2");        return ERROR;    }    if (!in[1]) {	range = get_range( pos, range_default, n1*2 );    }    else {        if ( DXGetObjectClass(in[1]) != CLASS_ARRAY) {            DXSetError(ERROR_BAD_PARAMETER,"bad class");            goto error;        }        a2 = (Array)DXCopy(in[1], COPY_STRUCTURE);        if (!a2)            goto error;        if ( DXGetArrayClass(a2) != CLASS_ARRAY) {            DXSetError(ERROR_BAD_PARAMETER,"bad array class");            goto error;        }        DXGetArrayInfo(a2,&item,&type,&category,&rank,shape);        if (item != 2) {            DXSetError(ERROR_BAD_PARAMETER, "range error");            goto error;        }        range = (int *) DXGetArrayData(a2);    }    if (!in[2]) {        DXSetError(ERROR_BAD_PARAMETER, "missing data parameter");        goto error;    }    if ( DXGetObjectClass(in[2]) != CLASS_ARRAY) {        DXSetError(ERROR_BAD_PARAMETER,"resolution error");        goto error;    }    a1 = (Array)DXCopy(in[2], COPY_STRUCTURE);    if (!a1)        goto error;    DXGetArrayInfo(a1,&item,&type,&category,&rank,shape);    resol_a = (int *) DXGetArrayData(a1);    if (item != 1) {        DXSetError(ERROR_BAD_PARAMETER, "resolution error");        goto error;    }    if (!in[3])         method_a = method_default;    else if ( DXGetObjectClass(in[3]) == CLASS_STRING )     	    DXExtractString(in[3], &method_a);    	 else {            DXSetError(ERROR_BAD_PARAMETER,"method should be string");            goto error;    	 }    if ( strcasecmp( method_a, "spherical") == 0       || strcasecmp( method_a, "1") == 0)        method = 1;    else if ( strcasecmp( method_a, "exponential") == 0       || strcasecmp( method_a, "2") == 0)        method = 2;    else if ( strcasecmp( method_a, "gaussian") == 0       || strcasecmp( method_a, "3") == 0)        method = 3;    else {        DXSetError(ERROR_BAD_PARAMETER,"input method error");        goto error;    }        if (!in[4])  {        DXSetError(ERROR_BAD_PARAMETER, "missing data parameter");        goto error;    }    else         DXExtractFloat(in[4], &range_a);             if (!in[5])  {        DXSetError(ERROR_BAD_PARAMETER, "missing data parameter");        goto error;    }    else         DXExtractFloat(in[5], &nugget);             if (!in[6]) {         DXSetError(ERROR_BAD_PARAMETER, "missing data parameter");        goto error;    }    else         DXExtractFloat(in[6], &sill);     kriging(range, method, n1, value, resol_a, pos, nugget, sill-nugget,            range_a);        out[0]=DXImportDX(krig_fn,NULL,NULL,NULL,NULL);    out[1]=DXImportDX(vari_fn,NULL,NULL,NULL,NULL);    unlink(krig_fn);    unlink(vari_fn);    return OK;    error:    return ERROR;}int kriging(int *range, int mode, int item, float *Z_s, int *resol,            float *pos, float c0, float c1, float a) {    FILE *opt, *opt1;    int dim,i,j,*ipiv,info;    float xs,ys,zs,i_f,j_f,k,l,cnt_x,cnt_y;    float begin_row,begin_col,end_row,end_col,*V,*Cd,*work,test_t;    int resol_x, resol_y;    /* initialize values */    begin_row = (float) *(range);    begin_col = (float) *(range+1);    end_row = (float) *(range+2);    end_col = (float) *(range+3);    dim = item + 1;    resol_x = *(resol);    resol_y = *(resol+1);        /* allocate V array */    V = (float *) DXAllocate (sizeof (float) * dim * dim );    D = (float *) DXAllocate (sizeof (float) * dim);    weight = (float *) DXAllocate (sizeof (float) * dim);    /* allocate Cd array */    Cd = (float *) DXAllocate (sizeof (float) * dim * dim );    /* caculate the distance between sample datas put into Cd array*/    for ( i=0; i< dim-1 ;i++)        for (j=i; j < dim-1 ; j++) {            test_t =( pos[i*2]-pos[j*2] )*( pos[i*2]-pos[j*2])+                    ( pos[i*2+1]-pos[j*2+1] )*( pos[i*2+1]-pos[j*2+1] );            Cd[i*dim+j]= sqrt( test_t );        }    for ( i=0; i< dim-1 ;i++) {        V[i*dim+dim-1]= 1;        V[(dim-1)*(dim)+i]=1;    }    V[(dim-1)*(dim)+i] = 0;    /* caculate the variogram of sample datas and put into  V array */    for ( i=0; i< dim-1 ;i++)        for (j=i; j < dim-1; j++) {            switch( mode ) {                case 1 : /* Spher mode */                         if ( Cd[i*dim+j] < a )                            V[i*dim+j] = V[j*dim+i] = c0 + c1*(                                  1.5*Cd[i*dim+j]/a - 0.5*(Cd[i*dim+j]/a)*                                  (Cd[i*dim+j]/a)*(Cd[i*dim+j]/a));                         else                            V[i*dim+j] = V[j*dim+i] = c0 + c1;                         break;                case 2 : /* Expon mode */                         V[i*dim+j] = V[j*dim+i] = c0 + c1 *( 1 -                                   exp(-3*Cd[i*dim+j]/a) );                         break;                case 3 : /* Gauss mode */                         V[i*dim+j] = V[j*dim+i] = c0 + c1 *( 1 -                                  exp(-3*Cd[i*dim+j]*Cd[i*dim+j]/a/a));                         break;                default: fprintf(stderr, " mode error \n");                         break;            }        }    /* release Cd array */    DXFree(Cd);    ipiv = (int *) DXAllocate (sizeof(int)*dim);    work = (float *) DXAllocate (sizeof(float)*dim);    /* call inverse matrix function to inverse matrix C */    sgetrf_(&dim,&dim,V,&dim,ipiv,&info);    if ( info != 0) fprintf(stderr, "matrix error!!\n");    sgetri_(&dim,V,&dim,ipiv,work,&dim,&info);    if ( info != 0) fprintf(stderr, "matrix error!!\n");    DXFree(ipiv);    DXFree(work);    /* create a temperate file to put result */    opt = fopen(krig_fn,"w");    if ( opt == NULL ) {        fprintf(stderr,"error open output file\n");        return(-1);    }    opt1 = fopen(vari_fn,"w");    if ( opt1 == NULL ) {        fprintf(stderr,"error open output file\n");        return(-1);    }    /* for loop for each point of the estimated block */    cnt_x = (end_row - begin_row)/ (float) resol_x;    cnt_y = (end_col - begin_col)/ (float) resol_y;    fprintf(opt,"object 1 class gridconnections counts %d %d\n",            resol_x+1,resol_y+1);    fprintf(opt,"attribute \"element type\" string \"quads\"\n");    fprintf(opt,"attribute \"ref\" string \"positions\"\n");    fprintf(opt,"#\n");    fprintf(opt,"object 2 class array type float rank 1 shape 2 items %d data follows\n",(resol_x+1)*(resol_y+1));    fprintf(opt1,"object 1 class gridconnections counts %d %d\n",            resol_x+1,resol_y+1);    fprintf(opt1,"attribute \"element type\" string \"quads\"\n");    fprintf(opt1,"attribute \"ref\" string \"positions\"\n");    fprintf(opt1,"#\n");    fprintf(opt1,"object 2 class array type float rank 1 shape 2 items %d data follows\n",(resol_x+1)*(resol_y+1));    for ( i = 0; i<= resol_x; i++) {        i_f = cnt_x*i+begin_row;         for ( j = 0; j<= resol_y; j++) {           j_f=cnt_y*j+begin_col;          /* call kriging subroutine */           fprintf(opt,"%f %f\n",i_f,j_f);           fprintf(opt1,"%f %f\n",i_f,j_f);	   l++;        }    }    fprintf(opt,"#\n");    fprintf(opt1,"#\n");    fprintf(opt,"object 3 class array type float rank 0 items %d data follows\n", (resol_x+1)*(resol_y+1));    fprintf(opt1,"object 3 class array type float rank 0 items %d data follows\n", (resol_x+1)*(resol_y+1));    for ( i = 0; i<= resol_x; i++) {        i_f = cnt_x*i+begin_row;         for ( j = 0; j<= resol_y; j++) {           j_f=cnt_y*j+begin_col;          /* call kriging subroutine */           kriging_result(V,i_f,j_f,dim,pos,Z_s,mode,a,c0,c1);           fprintf(opt,"%f\n",result[0]);           fprintf(opt1,"%f\n",result[1]);        }    }    fprintf(opt,"attribute \"dep\" string \"positions\"\n");    fprintf(opt,"#\n");    fprintf(opt,"object \"default\" class field\n");    fprintf(opt,"component \"connections\" value 1\n");    fprintf(opt,"component \"positions\" value 2\n");    fprintf(opt,"component \"data\" value 3\n");    fprintf(opt,"#\n");    fprintf(opt,"end\n");    fclose(opt);    fprintf(opt1,"attribute \"dep\" string \"positions\"\n");    fprintf(opt1,"#\n");    fprintf(opt1,"object \"default\" class field\n");    fprintf(opt1,"component \"connections\" value 1\n");    fprintf(opt1,"component \"positions\" value 2\n");    fprintf(opt1,"component \"data\" value 3\n");    fprintf(opt1,"#\n");    fprintf(opt1,"end\n");    fclose(opt1);    DXFree(V);    DXFree(D);    DXFree(weight);    return OK;error:    return ERROR;}/*--------- kriging_result subroutine -----------*/float kriging_result(float *V, float i_f, float j_f, int dim, float *pos,        float *Z_s, int mode,int a, float c0, float c1) {    int i,j;    float h;/* caculate the distance between estimated point and sample datas *//* and caculate the variogram of estimated point and sample datas and          put into D array */    for (i=0; i < dim-1 ; i++) {        h = sqrt( ( pos[i*2]-i_f )*( pos[i*2]-i_f ) +                  ( pos[i*2+1]-j_f )*( pos[i*2+1]-j_f ) );        switch( mode ) {            case 1 : /* Spher mode */                     if ( h < a )                        D[i] = c0 + c1 * (1.5*h/a - 0.5*(h/a)*(h/a)*(h/a));                     else                        D[i] = c0 + c1;                     break;            case 2 : /* Expon mode */                     D[i] = c0 + c1 * (1 - exp(-3*h/a));                     break;            case 3 : /* Gauss mode */                     D[i] = c0 + c1 * (1 - exp(-3*h*h/a/a));                     break;            default: fprintf(stderr, " mode error \n");                     break;        }    }    D[i] = 1;    /* caculate the weights */    for ( i = 0 ;i <= dim ;i++) {       weight[i] = 0;       for ( j = 0 ; j <= dim ; j++)          weight[i] += V[i*dim+j] * D[j];    }    /* caculate and return the estimated value */    result[0] = 0;    for ( i = 0 ;i < dim ;i++) {        result[0] += weight[i] * Z_s[i];    }/* result[0] : kriging result *//* result[1] : error variance result */    result[0] = ( result[0] >= 0 ) ? result[0] : 0;    result[1] = 0;    for ( i = 0 ;i < dim-1 ;i++) {        result[1] += weight[i] * D[i];    }    result[1] += weight[dim-1];    result[1] = sqrt(result[1]);    return (1);}/* get the maximum and minimum value of input range as default range */int *get_range(float *pos, int *range, int item) {    float min_row, min_col, max_row, max_col;    int i;        min_row = *pos;    min_col = *(pos+1);    max_row = *pos;    max_col = *(pos+1);            for ( i=2; i<item; i+=2){        if ( min_row > *(pos+i) ) min_row = *(pos+i);        if ( min_col > *(pos+i+1) ) min_col = *(pos+i+1);        if ( max_row < *(pos+i) ) max_row = *(pos+i);                if ( max_col < *(pos+i+1) ) max_col = *(pos+i+1);    }        *range = (int) min_row;    *(range+1) = (int) min_col;    *(range+2) = (int) max_row+1;          *(range+3) = (int) max_col+1;        return ( range );     }   

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩综合在线视频| 91在线视频观看| 99re这里只有精品6| 日韩欧美在线网站| 亚洲乱码中文字幕| 国产精品99久久久久久有的能看 | 亚洲码国产岛国毛片在线| 天天av天天翘天天综合网 | 一本久久a久久免费精品不卡| 日韩西西人体444www| 日韩毛片在线免费观看| 国产精品一区久久久久| 欧美一级国产精品| 丝袜美腿亚洲色图| 精品视频资源站| 一区二区激情视频| 一本色道a无线码一区v| 亚洲欧美中日韩| 国产·精品毛片| 久久欧美一区二区| 国产一区二区久久| 久久久亚洲综合| 国产精品一级在线| 国产日韩一级二级三级| 国产精品一线二线三线精华| 日韩免费高清av| 精品在线你懂的| 久久综合久久综合久久| 久久99久久99精品免视看婷婷 | 国产成人aaa| 国产亚洲污的网站| 成人一区在线观看| 国产精品福利一区| 99久久久久久| 亚洲精品乱码久久久久久日本蜜臀| jlzzjlzz亚洲女人18| 亚洲欧美另类小说| 色吊一区二区三区| 亚洲成人三级小说| 日韩一区二区三区高清免费看看| 日韩av电影免费观看高清完整版 | 日韩制服丝袜av| 3d成人动漫网站| 久久精品国产一区二区三区免费看 | 在线不卡一区二区| 麻豆一区二区三| 欧美岛国在线观看| 岛国av在线一区| 亚洲一区在线播放| 日韩欧美色综合| 国产精品亚洲综合一区在线观看| 国产精品人人做人人爽人人添| 99国产一区二区三精品乱码| 亚洲一级电影视频| 日韩一区二区免费在线电影 | 高清久久久久久| 亚洲黄网站在线观看| 91精品欧美一区二区三区综合在| 久久国产精品露脸对白| 亚洲三级免费观看| 欧美一级片免费看| 东方aⅴ免费观看久久av| 专区另类欧美日韩| 欧美一区二区观看视频| 成人av资源站| 亚洲大片精品永久免费| 国产清纯在线一区二区www| 91天堂素人约啪| 另类小说视频一区二区| 亚洲色大成网站www久久九九| 欧美一二三区在线观看| 99视频在线精品| 日韩av成人高清| 亚洲免费高清视频在线| 欧美精品一区二区三区久久久| 色综合久久久久综合体桃花网| 免费观看一级特黄欧美大片| 中文字幕欧美一| 精品国产网站在线观看| 色94色欧美sute亚洲13| 国产高清不卡一区二区| 日本三级亚洲精品| 亚洲精品成人在线| 中文字幕欧美日本乱码一线二线| 欧美日韩一区 二区 三区 久久精品| 国产精品资源在线| 婷婷久久综合九色综合绿巨人| 国产视频一区在线观看| 91精品在线一区二区| 一本一道综合狠狠老| 国产一区二区三区四| 视频在线在亚洲| 一区二区三区**美女毛片| 国产午夜亚洲精品羞羞网站| 欧美二区乱c少妇| 91精品91久久久中77777| 国产不卡视频在线播放| 美女国产一区二区| 视频在线在亚洲| 亚洲影视资源网| 亚洲免费毛片网站| 中文字幕色av一区二区三区| 国产日韩成人精品| 久久精品亚洲一区二区三区浴池| 日韩欧美国产系列| 欧美日韩高清一区二区不卡| 在线观看亚洲a| 色婷婷精品大视频在线蜜桃视频| 99免费精品在线观看| 成人动漫一区二区三区| 国产高清精品网站| 国产成人av一区二区三区在线 | 欧美成人国产一区二区| 欧美一区二区三区色| 欧美一区二区三区在线看| 欧美三级日韩在线| 欧美放荡的少妇| 日韩欧美不卡在线观看视频| 日韩三区在线观看| 欧美成人福利视频| 777久久久精品| 欧美大片国产精品| 久久综合九色综合久久久精品综合| 久久免费电影网| 中文av字幕一区| 亚洲免费电影在线| 丝瓜av网站精品一区二区| 日韩精品福利网| 久草在线在线精品观看| 国产成人无遮挡在线视频| 成人网在线免费视频| 91麻豆swag| 在线成人小视频| 26uuu国产一区二区三区| 亚洲国产电影在线观看| 亚洲欧洲精品一区二区三区| 一区二区三区.www| 日韩成人午夜电影| 国产一区欧美二区| 91麻豆精东视频| 91精品国产综合久久国产大片| 欧美zozozo| 国产精品国产三级国产有无不卡 | 欧美国产丝袜视频| 亚洲精品成人天堂一二三| 日韩精品福利网| 懂色av噜噜一区二区三区av| 欧美性三三影院| 国产亚洲欧美中文| 亚洲成人综合在线| 精品亚洲porn| 欧美亚洲综合网| 国产日韩欧美一区二区三区乱码 | 久久久国产精品午夜一区ai换脸| 亚洲人成精品久久久久久| 偷拍日韩校园综合在线| 国产精品资源网站| 欧美高清激情brazzers| 国产精品每日更新在线播放网址| 午夜国产精品影院在线观看| 高清日韩电视剧大全免费| 911精品产国品一二三产区| 久久免费电影网| 日韩成人精品在线观看| a级精品国产片在线观看| 日韩欧美国产一区在线观看| 国产精品成人在线观看| 男人的j进女人的j一区| 色综合久久99| 日本一区二区成人在线| 蜜桃视频在线观看一区二区| 色婷婷狠狠综合| 久久久久久久久97黄色工厂| 日韩在线一区二区| 色先锋久久av资源部| 欧美激情一区在线| 久久国产尿小便嘘嘘| 欧美日韩一二三区| 亚洲欧美日韩系列| 不卡视频在线观看| 久久精品一区蜜桃臀影院| 蜜臀国产一区二区三区在线播放| 91看片淫黄大片一级| 久久久噜噜噜久久中文字幕色伊伊| 午夜久久电影网| 欧美日本在线看| 亚洲成a人片在线观看中文| 91美女在线观看| 中文字幕亚洲不卡| 福利电影一区二区三区| 亚洲精品在线免费播放| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩国产免费一区二区| 一区二区三区av电影| 在线观看成人免费视频| 亚洲国产日韩在线一区模特| 在线观看www91| 亚洲一区精品在线| 欧美日韩免费不卡视频一区二区三区| 亚洲综合成人在线|