コード例 #1
0
int main(int argc, char *argv[]) {
    vsip_init((void*)0);
{   if(argc < 4) {
            printf("usage\nfirEx length decimation filterFile <indataFile >outputFile\n");
            exit(0);
        }
        {
            vsip_length N = (vsip_length)atoi(argv[1]);
            int D = atoi(argv[2]);
            vsip_scalar_vi n = 0,k = 0;
            vsip_scalar_d hv;
            FILE *fh;
            vsip_fir_d *fir;
            vsip_vview_d *x = vsip_vcreate_d(N,0),
                          *h,*y;
            fh = fopen(argv[3],"r");
            while(fscanf(fh,"%lf",&hv) == 1) n++;
            rewind(fh);
            y = vsip_vcreate_d(N/D + 1,0);
            h = vsip_vcreate_d(n,0);
            n=0;
            while(fscanf(fh,"%lf",&hv) == 1) {
                vsip_vput_d(h,n,hv);
                n++;
            }
            fclose(fh);
            fir = vsip_fir_create_d(h,VSIP_NONSYM,N,D,STATE,0,0);
            n = VU_scanstdin_d(x);
            while(n == N) {
                k = vsip_firflt_d(fir,x,y);
                VU_printstdout_d(y,0,k);
                n = VU_scanstdin_d(x);
            }
            if(n != 0) {
                k = vsip_firflt_d(fir,x,y);
                VU_printstdout_d(y,0,k);
            }
            {   /* test getattr */
                vsip_fir_attr attr;
                vsip_fir_getattr_d(fir,&attr);
                printf("kernel %lu\n input %lu\n output %lu\ndecimation %d\n",
                       attr.kernel_len,attr.in_len,attr.out_len, attr.decimation);
            }
            vsip_valldestroy_d(y);
            vsip_valldestroy_d(x);
            vsip_valldestroy_d(h);
            vsip_fir_destroy_d(fir);
        }
        vsip_finalize((void*)0);
        return 1;
    }
}
コード例 #2
0
ファイル: vsip_fir_create_d.c プロジェクト: rrjudd/jvsip
vsip_fir_d *vsip_fir_create_d(
              const vsip_vview_d *kernel,
              vsip_symmetry symm,
              vsip_length N,
              vsip_length D,
              vsip_obj_state state,
              unsigned int ntimes,
              vsip_alg_hint hint)
{
    vsip_length klength = 0;
    vsip_fir_d *fir = (vsip_fir_d*)malloc(sizeof(vsip_fir_d));
    if(fir == NULL){ return (vsip_fir_d*) NULL;
    } else {
        switch(symm){
           case 0: klength = kernel->length;
                   break;
           case 1: klength = 2 * kernel->length - 1;
                   break;
           case 2: klength = 2 * kernel->length;
                   break;
        }
        fir->h = VI_vcreate_d(klength,VSIP_MEM_NONE);
        fir->s = VI_vcreate_d(klength-1,VSIP_MEM_NONE);
    }
    if((fir->h == NULL) | (fir->s == NULL)){ 
        vsip_fir_destroy_d(fir);
        return (vsip_fir_d*) NULL;
    } else {
       fir->N = N;
       fir->M = klength;
       fir->D = D;
       fir->p = 0;
       fir->ntimes = ntimes;
       fir->symm = symm;
       fir->hint = hint;
       switch(symm){
           case 0:{
              fir->h->offset = fir->h->length - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
           }
           break;
           case 1: {
              fir->h->length = kernel->length;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->offset = klength - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->length = klength;
           }
           break;
           case 2: {
              fir->h->length = kernel->length;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->offset = klength - 1;
              fir->h->stride = -1;
              VI_vcopy_d_d(kernel,fir->h);
              fir->h->length = klength;
           }
           break;
       }
       fir->state = state;
       fir->h->offset = 0;
       fir->h->stride = 1;
       VI_vfill_d(0,fir->s);
       return fir;
    }
}