public void wavelet_packet_decomposition(ref Wavelet w, double[] signal, int level, ref List<double[]> decomposed) { if (level == 0) { decomposed.Add(signal); return; } double[] level_coefs_g = signal, level_coefs_h = signal; TimeDomain.convolution(ref w.low_pass_filter_coef, level_coefs_g, out level_coefs_g); TimeDomain.downsample(level_coefs_g, 2, out level_coefs_g); wavelet_packet_decomposition(ref w, level_coefs_g, level-1, ref decomposed); TimeDomain.convolution(ref w.high_pass_filter_coef, level_coefs_h, out level_coefs_h); TimeDomain.downsample(level_coefs_h, 2, out level_coefs_h); wavelet_packet_decomposition(ref w, level_coefs_h, level-1, ref decomposed); }
public void forward_wavelet_transform(ref Wavelet w, double[] signal, int level, ref List<double[]> decomposed) { }