#include #include #include #define max(A,B) ((A) > (B) ? (A) : (B)) void ifwt1d( double s1[], /*分解信号s1*/ double w1[], /*分解信号w1*/ unsigned int s_len, /*信号長*/ double p[], /*スケーリング係数pk*/ double q[], /*ウェーブレット係数qk*/ unsigned int sup, /*数列長*/ double s0[] /*再構成信号*/ ) { unsigned int n,k; unsigned int index,ofs; ofs = max(1024,s_len); /*indexが負にならないための補正値*/ for(n = 0; n < s_len; n++){ s0[2*n+1] =0.0; s0[2*n] = 0.0; for(k = 0; k < sup/2; k++){ index = (n-k + ofs) % s_len; // printf("index = %d\n",index); s0[2*n+1] += p[2*k+1] * s1[index] + q[2*k+1] * w1[index]; s0[2*n] += p[2*k] * s1[index] + q[2*k] * w1[index]; } } getch(); }