Пример #1
0
int d_dec_a(double input[], int input_len, Wavelet* wavelet, double output[], int output_len, int mode){
	int dwt_buf_len = dwt_buffer_length(input_len, wavelet->dec_len, mode);
	//printf("output len: %d, dwt buf len: %d\n",output_len,dwt_buf_len);
	if(output_len != dwt_buf_len){
//		cout << "There was a difference in what the data length should be. " <<
//		" This is unrecoverable and should not have happened" << endl;
		exit(0);
	}
	return downsampling_convolution(input, input_len, wavelet->analysisLow->coeff, wavelet->dec_len, output, 2, mode);
}
Пример #2
0
Файл: wt.c Проект: booherbg/pywt
int double_dec_d(double input[], index_t input_len,
                  Wavelet* wavelet,
                  double output[], index_t output_len,
                  MODE mode){

    // check output length
    if(output_len != dwt_buffer_length(input_len, wavelet->dec_len, mode))
        return -1;

    return double_downsampling_convolution(input, input_len, wavelet->dec_hi_double,
                                             wavelet->dec_len, output, 2, mode);
}
Пример #3
0
Файл: wt.c Проект: booherbg/pywt
int float_dec_d(float input[], index_t input_len,
                  Wavelet* wavelet,
                  float output[], index_t output_len,
                  MODE mode){

    // check output length
    if(output_len != dwt_buffer_length(input_len, wavelet->dec_len, mode))
        return -1;

    return float_downsampling_convolution(input, input_len, wavelet->dec_hi_float,
                                             wavelet->dec_len, output, 2, mode);
}
Пример #4
0
int main(){

    // Using C API to decompose 1D signal.
    // Results equivalent to pywt.dwt([1,2,3,4,5,6,7,8], 'db2', 'zpd').
    // Compile: gcc -I../src dwt_decompose.c ../src/wt.c ../src/wavelets.c ../src/common.c ../src/convolution.c

    Wavelet *w = wavelet('d', 2);
    MODE mode = MODE_ZEROPAD;

    int i;
    float input[] = {1,2,3,4,5,6,7,8,9};
    float *cA, *cD;
    index_t input_len, output_len;

    input_len = sizeof input / sizeof input[0];
    output_len = dwt_buffer_length(input_len, w->dec_len, mode);

    cA = wtcalloc(output_len, sizeof(float));
    cD = wtcalloc(output_len, sizeof(float));

    printf("Wavelet: %s %d\n\n", w->family_name, w->vanishing_moments_psi);

    float_dec_a(input, input_len, w, cA, output_len, mode);
    float_dec_d(input, input_len, w, cD, output_len, mode);

    for(i=0; i<output_len; i++){
        printf("%f ", cA[i]);
    }
    printf("\n\n");

    for(i=0; i<output_len; i++){
        printf("%f ", cD[i]);
    }
    printf("\n");

    free_wavelet(w);
    wtfree(cA);
    wtfree(cD);
    return 0;
}
Пример #5
0
int d_dec_d(double input[], int input_len, Wavelet* wavelet, double output[], int output_len, int mode){
	if(output_len != dwt_buffer_length(input_len, wavelet->dec_len, mode))
		return -1;
	return downsampling_convolution(input, input_len, wavelet->analysisHigh->coeff, wavelet->dec_len, output, 2, mode);
}