mirror of
				https://github.com/simon987/wavelib.git
				synced 2025-11-04 10:26:52 +00:00 
			
		
		
		
	wt2 examples added
This commit is contained in:
		
							parent
							
								
									8580e896da
								
							
						
					
					
						commit
						2ef5c81d82
					
				@ -4250,7 +4250,7 @@ void wt2_summary(wt2_object wt) {
 | 
				
			|||||||
		t += 1;
 | 
							t += 1;
 | 
				
			||||||
		printf("Vertical Coefficients access at wt->coeffaccess[%d]=%d, Vector size:%d \n", t, wt->coeffaccess[t], vsize);
 | 
							printf("Vertical Coefficients access at wt->coeffaccess[%d]=%d, Vector size:%d \n", t, wt->coeffaccess[t], vsize);
 | 
				
			||||||
		t += 1;
 | 
							t += 1;
 | 
				
			||||||
		printf("Detail Coefficients access at wt->coeffaccess[%d]=%d, Vector size:%d \n\n", t, wt->coeffaccess[t], vsize);
 | 
							printf("Diagonal Coefficients access at wt->coeffaccess[%d]=%d, Vector size:%d \n\n", t, wt->coeffaccess[t], vsize);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -30,6 +30,18 @@ add_executable(modwtdenoisetest modwtdenoisetest.c)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
target_link_libraries(modwtdenoisetest wauxlib wavelib)
 | 
					target_link_libraries(modwtdenoisetest wauxlib wavelib)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(dwt2test dwt2test.c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_libraries(dwt2test wavelib)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(swt2test swt2test.c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_libraries(swt2test wavelib)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					add_executable(modwt2test modwt2test.c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					target_link_libraries(modwt2test wavelib)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if(UNIX)
 | 
					if(UNIX)
 | 
				
			||||||
	target_link_libraries(cwttest m)
 | 
						target_link_libraries(cwttest m)
 | 
				
			||||||
	target_link_libraries(dwttest m)
 | 
						target_link_libraries(dwttest m)
 | 
				
			||||||
@ -39,9 +51,12 @@ if(UNIX)
 | 
				
			|||||||
	target_link_libraries(wtreetest m)
 | 
						target_link_libraries(wtreetest m)
 | 
				
			||||||
	target_link_libraries(denoisetest m)
 | 
						target_link_libraries(denoisetest m)
 | 
				
			||||||
	target_link_libraries(modwtdenoisetest m)
 | 
						target_link_libraries(modwtdenoisetest m)
 | 
				
			||||||
 | 
						target_link_libraries(dwt2test m)
 | 
				
			||||||
 | 
						target_link_libraries(swt2test m)
 | 
				
			||||||
 | 
						target_link_libraries(modwt2test m)
 | 
				
			||||||
endif()
 | 
					endif()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
set_target_properties(cwttest dwttest swttest modwttest dwpttest wtreetest denoisetest modwtdenoisetest
 | 
					set_target_properties(cwttest dwttest swttest modwttest dwpttest wtreetest denoisetest modwtdenoisetest dwt2test swt2test modwt2test
 | 
				
			||||||
        PROPERTIES
 | 
					        PROPERTIES
 | 
				
			||||||
        RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/test"
 | 
					        RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/test"
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										87
									
								
								test/dwt2test.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										87
									
								
								test/dwt2test.c
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,87 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					#include "../header/wavelib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double absmax(double *array, int N) {
 | 
				
			||||||
 | 
						double max;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						max = 0.0;
 | 
				
			||||||
 | 
						for (i = 0; i < N; ++i) {
 | 
				
			||||||
 | 
							if (fabs(array[i]) >= max) {
 | 
				
			||||||
 | 
								max = fabs(array[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return max;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double generate_rnd() {
 | 
				
			||||||
 | 
						double rnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rnd = (double) (rand() % 100 + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return rnd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
						wave_object obj;
 | 
				
			||||||
 | 
						wt2_object wt;
 | 
				
			||||||
 | 
						int i, k, J, rows, cols,N;
 | 
				
			||||||
 | 
						double *inp, *wavecoeffs,*oup,*diff;
 | 
				
			||||||
 | 
						double *cLL;
 | 
				
			||||||
 | 
						int ir, ic;
 | 
				
			||||||
 | 
						double amax;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rows = 32;
 | 
				
			||||||
 | 
						cols = 30;
 | 
				
			||||||
 | 
					    N = rows*cols;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char *name = "db2";
 | 
				
			||||||
 | 
						obj = wave_init(name);// Initialize the wavelet
 | 
				
			||||||
 | 
						srand(time(0));
 | 
				
			||||||
 | 
						inp = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						oup = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						diff = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
						J = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt = wt2_init(obj, "dwt", rows,cols, J);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < rows; ++i) {
 | 
				
			||||||
 | 
							for (k = 0; k < cols; ++k) {
 | 
				
			||||||
 | 
								//inp[i*cols + k] = i*cols + k;
 | 
				
			||||||
 | 
								inp[i*cols + k] = generate_rnd();
 | 
				
			||||||
 | 
								oup[i*cols + k] = 0.0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wavecoeffs = dwt2(wt, inp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cLL = getWT2Coeffs(wt, wavecoeffs, 1, "D", &ir, &ic);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dispWT2Coeffs(cLL, ir, ic);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						idwt2(wt, wavecoeffs, oup);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < rows*cols; ++i) {
 | 
				
			||||||
 | 
							diff[i] = oup[i] - inp[i];
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						amax = absmax(diff, rows*cols);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt2_summary(wt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printf("Abs Max %g \n", amax);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wave_free(obj);
 | 
				
			||||||
 | 
						wt2_free(wt);
 | 
				
			||||||
 | 
						free(inp);
 | 
				
			||||||
 | 
						free(wavecoeffs);
 | 
				
			||||||
 | 
						free(oup);
 | 
				
			||||||
 | 
						free(diff);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										82
									
								
								test/modwt2test.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										82
									
								
								test/modwt2test.c
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,82 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					#include "../header/wavelib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double absmax(double *array, int N) {
 | 
				
			||||||
 | 
						double max;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						max = 0.0;
 | 
				
			||||||
 | 
						for (i = 0; i < N; ++i) {
 | 
				
			||||||
 | 
							if (fabs(array[i]) >= max) {
 | 
				
			||||||
 | 
								max = fabs(array[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return max;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double generate_rnd() {
 | 
				
			||||||
 | 
						double rnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rnd = (double) (rand() % 100 + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return rnd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
						wave_object obj;
 | 
				
			||||||
 | 
						wt2_object wt;
 | 
				
			||||||
 | 
						int i, k, J, rows, cols,N,ir,ic;
 | 
				
			||||||
 | 
						double *inp, *wavecoeffs, *oup,*cLL,*diff;
 | 
				
			||||||
 | 
						double amax;
 | 
				
			||||||
 | 
						rows = 51;
 | 
				
			||||||
 | 
						cols = 40;
 | 
				
			||||||
 | 
						N = rows*cols;
 | 
				
			||||||
 | 
						char *name = "db2";
 | 
				
			||||||
 | 
						obj = wave_init(name);// Initialize the wavelet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						inp = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						oup = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						diff = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						J = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt = wt2_init(obj, "modwt", rows, cols, J);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < rows; ++i) {
 | 
				
			||||||
 | 
							for (k = 0; k < cols; ++k) {
 | 
				
			||||||
 | 
								//inp[i*cols + k] = i*cols + k;
 | 
				
			||||||
 | 
					            inp[i*cols + k] = generate_rnd();
 | 
				
			||||||
 | 
								oup[i*cols + k] = 0.0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wavecoeffs = modwt2(wt, inp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cLL = getWT2Coeffs(wt, wavecoeffs, J, "A", &ir, &ic);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						//dispWT2Coeffs(cLL, ir, ic);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						imodwt2(wt, wavecoeffs, oup);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < N; ++i) {
 | 
				
			||||||
 | 
							diff[i] = oup[i] - inp[i];
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						amax = absmax(diff, N);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt2_summary(wt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printf("Abs Max %g \n", amax);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						wave_free(obj);
 | 
				
			||||||
 | 
						wt2_free(wt);
 | 
				
			||||||
 | 
						free(inp);
 | 
				
			||||||
 | 
						free(wavecoeffs);
 | 
				
			||||||
 | 
						free(oup);
 | 
				
			||||||
 | 
						free(diff);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										83
									
								
								test/swt2test.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										83
									
								
								test/swt2test.c
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,83 @@
 | 
				
			|||||||
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					#include <math.h>
 | 
				
			||||||
 | 
					#include <time.h>
 | 
				
			||||||
 | 
					#include "../header/wavelib.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double absmax(double *array, int N) {
 | 
				
			||||||
 | 
						double max;
 | 
				
			||||||
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						max = 0.0;
 | 
				
			||||||
 | 
						for (i = 0; i < N; ++i) {
 | 
				
			||||||
 | 
							if (fabs(array[i]) >= max) {
 | 
				
			||||||
 | 
								max = fabs(array[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return max;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					double generate_rnd() {
 | 
				
			||||||
 | 
						double rnd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						rnd = (double) (rand() % 100 + 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return rnd;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int main() {
 | 
				
			||||||
 | 
						wave_object obj;
 | 
				
			||||||
 | 
						wt2_object wt;
 | 
				
			||||||
 | 
						int i, k, J, rows, cols;
 | 
				
			||||||
 | 
						double *inp, *wavecoeffs, *oup, *cLL,*diff;
 | 
				
			||||||
 | 
						double amax;
 | 
				
			||||||
 | 
						int ir, ic, N;
 | 
				
			||||||
 | 
						rows = 64;
 | 
				
			||||||
 | 
						cols = 48;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						char *name = "bior3.1";
 | 
				
			||||||
 | 
						obj = wave_init(name);// Initialize the wavelet
 | 
				
			||||||
 | 
						N = rows*cols;
 | 
				
			||||||
 | 
						inp = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						oup = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						diff = (double*)calloc(N, sizeof(double));
 | 
				
			||||||
 | 
						J = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt = wt2_init(obj, "swt", rows, cols, J);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < rows; ++i) {
 | 
				
			||||||
 | 
							for (k = 0; k < cols; ++k) {
 | 
				
			||||||
 | 
								//inp[i*cols + k] = i*cols + k;
 | 
				
			||||||
 | 
					            inp[i*cols + k] = generate_rnd();
 | 
				
			||||||
 | 
								oup[i*cols + k] = 0.0;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						wavecoeffs = swt2(wt, inp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cLL = getWT2Coeffs(wt, wavecoeffs, J, "A", &ir, &ic);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dispWT2Coeffs(cLL, ir, ic);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						iswt2(wt, wavecoeffs, oup);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for (i = 0; i < N; ++i) {
 | 
				
			||||||
 | 
							diff[i] = oup[i] - inp[i];
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						amax = absmax(diff, N);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						wt2_summary(wt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						printf("Abs Max %g \n", amax);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						wave_free(obj);
 | 
				
			||||||
 | 
						wt2_free(wt);
 | 
				
			||||||
 | 
						free(inp);
 | 
				
			||||||
 | 
						free(wavecoeffs);
 | 
				
			||||||
 | 
						free(oup);
 | 
				
			||||||
 | 
						free(diff);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user