vsip_mview_f* VU_I_f(vsip_length M) { vsip_mview_f *I = vsip_mcreate_f(M,M,VSIP_ROW,VSIP_MEM_NONE); if(I != NULL){ vsip_vview_f *row = vsip_mrowview_f(I,0); if(row != NULL){ vsip_vputlength_f(row,(vsip_length)(M * M)); vsip_vfill_f((vsip_scalar_f)0.0,row); vsip_vputlength_f(row,M); vsip_vputstride_f(row,(vsip_stride) (M + 1)); vsip_vfill_f((vsip_scalar_f)1.0,row); vsip_vdestroy_f(row); } else { vsip_mdestroy_f(I); return (vsip_mview_f*) NULL; } } else { return (vsip_mview_f*) NULL; } return I; }
int main () { vsip_init((void*)0); { vsip_vview_f *kernel = vsip_vcreate_kaiser_f(128,15.0,VSIP_MEM_NONE); vsip_randstate *r_state = vsip_randcreate(11,1,1,VSIP_NPRNG); vsip_conv1d_f *conv; vsip_fir_f *fir; vsip_vview_f *data = vsip_vcreate_f( 2 * N_data,VSIP_MEM_NONE), *noise = vsip_vcreate_f( 3 * N_data,VSIP_MEM_NONE), *avg = vsip_vcreate_f( 4 * N_data,VSIP_MEM_NONE); int i; vsip_length N_len; vsip_vputlength_f(data, (vsip_length)((N_data-1)/dec1)+1); vsip_vputlength_f(avg, (vsip_length)((N_data-1)/dec1)+1); vsip_vputstride_f(data,2); vsip_vputstride_f(avg,4); vsip_vputlength_f(noise,N_data); vsip_vputstride_f(noise,3); conv = vsip_conv1d_create_f( kernel,VSIP_NONSYM, N_data,dec1,VSIP_SUPPORT_SAME,0,0); fir = vsip_fir_create_f( kernel,VSIP_NONSYM, N_data,dec1,VSIP_STATE_NO_SAVE,0,0); vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_convolve1d_f(conv,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n",x,avg,"conv_dec1"); vsip_vdestroy_f(x); } vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_firflt_f(fir,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n",x,avg,"fir_dec1"); vsip_vdestroy_f(x); } vsip_conv1d_destroy_f(conv); vsip_fir_destroy_f(fir); conv = vsip_conv1d_create_f( kernel,VSIP_NONSYM, N_data,dec3,VSIP_SUPPORT_SAME,0,0); fir = vsip_fir_create_f( kernel,VSIP_NONSYM, N_data,dec3,VSIP_STATE_NO_SAVE,0,0); vsip_vputlength_f(data, (vsip_length)((N_data-1)/dec3)+1); vsip_vputlength_f(avg, (vsip_length)((N_data-1)/dec3)+1); vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_convolve1d_f(conv,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len - 1),x); VU_vfprintxyg_f("%8.6f %8.6f\n", x, avg,"conv_dec3"); vsip_vdestroy_f(x); } vsip_vfill_f(0,avg); for(i=0; i<10; i++){ vsip_vrandn_f(r_state,noise); vsip_firflt_f(fir,noise,data); VU_vfrdB_f(data,1e-13); vsip_vsma_f(data,0.1,avg,avg); } N_len = vsip_vgetlength_f(avg); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfprintxyg_f("%8.6f %8.6f\n", x, avg,"fir_dec3"); vsip_vdestroy_f(x); } N_len = vsip_vgetlength_f(kernel); { vsip_vview_f *x = vsip_vcreate_f( N_len,VSIP_MEM_NONE); vsip_vramp_f(0,1,x); VU_vfprintxyg_f("%8.6f %8.6f\n", x,kernel,"kaiser_window"); vsip_vramp_f(-.5,1.0/(vsip_scalar_f)(N_len-1),x); VU_vfrdB_f(kernel,1e-20); VU_vfprintxyg_f("%8.6f %8.6f\n", x,kernel,"Freq_Resp_Kaiser"); vsip_vdestroy_f(x); } vsip_randdestroy(r_state); vsip_valldestroy_f(kernel); vsip_conv1d_destroy_f(conv);vsip_fir_destroy_f(fir); vsip_valldestroy_f(data); vsip_valldestroy_f(noise); vsip_valldestroy_f(avg); } vsip_finalize((void*)0); return 0; }/*end of main program *******************************/