Home > src > main > matlab > s2let_fulltest.m

s2let_fulltest

PURPOSE ^

s2let_fulltest

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 s2let_fulltest
 Run all exactness tests for the MW sampling,
 all wavelet transforms must reconstruct the input maps
 at floating-point precision. Various parameters are tested.

 S2LET package to perform Wavelets on the Sphere.
 Copyright (C) 2012-2015  Boris Leistedt & Jason McEwen
 See LICENSE.txt for license details

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % s2let_fulltest
0002 % Run all exactness tests for the MW sampling,
0003 % all wavelet transforms must reconstruct the input maps
0004 % at floating-point precision. Various parameters are tested.
0005 %
0006 % S2LET package to perform Wavelets on the Sphere.
0007 % Copyright (C) 2012-2015  Boris Leistedt & Jason McEwen
0008 % See LICENSE.txt for license details
0009 
0010 clear all;
0011 close all;
0012 
0013 % Main parameters
0014 L = 32;
0015 B = 4;
0016 N = 4;
0017 Spin = 0;
0018 J_min = 1;
0019 J = s2let_jmax(L, B);
0020 
0021 disp('Checks tiling of harmonic space for axysimmetric wavelets')
0022 [kappa kappa0] = s2let_transform_axisym_tiling(B, L, J_min);
0023 error_on_axisym_tiling = s2let_check_axisym_tiling(kappa, kappa0, L, J)
0024 
0025 disp('Checks tiling of harmonic space for directional wavelets')
0026 [psi phi] = s2let_wavelet_tiling(B, L, N, Spin, J_min);
0027 error_on_axisym_tiling = s2let_check_tiling(psi, phi, L, Spin, J)
0028 
0029 disp('Generates band-limited function')
0030 flm = zeros(L^2,1);
0031 flm = rand(size(flm)) + sqrt(-1)*rand(size(flm));
0032 flm = 2.*(flm - (1+sqrt(-1))./2);
0033 disp('Construct the corresponding signal on the sphere')
0034 f = ssht_inverse(flm, L, 'Method', 'MW');
0035 disp('Construct the corresponding spin signal on the sphere')
0036 f_s = ssht_inverse(flm, L, 'Method', 'MW', 'Spin', Spin);
0037 
0038 % disp('Perform scalar directional harmonic-to-wavelet transform with default parameters')
0039 % [f_wav, f_scal] = s2let_transform_analysis_lm2wav(flm, 'N', N, 'Upsample', true);
0040 % flm_rec = s2let_transform_synthesis_lm2wav(f_wav, f_scal, 'N', N, 'Upsample', true);
0041 % default = max(abs(flm-flm_rec))
0042 
0043 % disp('Perform spin directional harmonic-to-wavelet transform with default parameters')
0044 % [f_wav, f_scal] = s2let_transform_analysis_lm2wav(flm, 'N', N, 'Spin', Spin, 'Upsample', true);
0045 % flm_rec = s2let_transform_synthesis_lm2wav(f_wav, f_scal, 'N', N, 'Spin', Spin, 'Upsample', true);
0046 % default = max(abs(flm-flm_rec))
0047 
0048 % disp('Perform spin directional harmonic-to-wavelet transform with custom parameters')
0049 % [f_wav, f_scal] = s2let_transform_analysis_lm2wav(flm,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0050 % flm_rec = s2let_transform_synthesis_lm2wav(f_wav, f_scal,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0051 % default = max(abs(flm-flm_rec))
0052 
0053 disp('Perform scalar directional wavelet transform with default parameters')
0054 [f_wav, f_scal] = s2let_transform_analysis_mw(f, 'N', N, 'Upsample', true);
0055 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Upsample', true);
0056 default = max(max(abs(f-f_rec)))
0057 
0058 disp('Perform spin directional wavelet transform with default parameters')
0059 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'N', N, 'Spin', Spin, 'Upsample', true);
0060 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Spin', Spin, 'Upsample', true);
0061 default = max(max(abs(f_s-f_rec)))
0062 
0063 disp('Perform spin directional wavelet transform with custom parameters')
0064 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0065 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0066 default = max(max(abs(f_s-f_rec)))
0067 
0068 disp('Perform multiresolution scalar directional wavelet transform with default parameters')
0069 [f_wav, f_scal] = s2let_transform_analysis_mw(f, 'N', N);
0070 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N);
0071 default = max(max(abs(f-f_rec)))
0072 
0073 disp('Perform multiresolution spin directional wavelet transform with default parameters')
0074 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'N', N, 'Spin', Spin);
0075 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Spin', Spin);
0076 default = max(max(abs(f_s-f_rec)))
0077 
0078 disp('Perform multiresolution spin directional wavelet transform with custom parameters')
0079 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', true);
0080 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal,  'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', true);
0081 default = max(max(abs(f_s-f_rec)))
0082 
0083 
0084 disp('Constraint on flms to generate real signal')
0085 for el = 0:L-1
0086    ind = el*el + el + 1;
0087    flm(ind,1) = real(flm(ind,1));
0088    for m = 1:el
0089       ind_pm = el*el + el + m + 1;
0090       ind_nm = el*el + el - m + 1;
0091       flm(ind_nm,1) = (-1)^m * conj(flm(ind_pm,1));
0092    end
0093 end
0094 disp('Construct the corresponding real signal on the sphere')
0095 f_real = ssht_inverse(flm, L, 'Method', 'MW', 'Reality', true);
0096 
0097 
0098 disp('Perform multiresolution real directional wavelet transform with default parameters')
0099 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true);
0100 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true);
0101 default = max(max(abs(f_real-f_rec)))
0102 
0103 
0104 disp('Perform full resolution real directional wavelet transform with default parameters')
0105 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true, 'Upsample', true);
0106 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true, 'Upsample', true);
0107 default = max(max(abs(f_real-f_rec)))
0108 
0109 stop
0110 
0111 
0112 disp('Generates band-limited function')
0113 flm = zeros(L^2,1);
0114 flm = rand(size(flm)) + sqrt(-1)*rand(size(flm));
0115 flm = 2.*(flm - (1+sqrt(-1))./2);
0116 disp('Construct the corresponding signal on the sphere')
0117 f = ssht_inverse(flm, L, 'Method', 'MW');
0118 disp('Construct the corresponding spin signal on the sphere')
0119 f_s = ssht_inverse(flm, L, 'Method', 'MW', 'Spin', Spin);
0120 
0121 disp('Perform axisym wavelet transform with default parameters')
0122 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f);
0123 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal);
0124 default = max(max(abs(f-f_rec)))
0125 
0126 disp('Perform axisym wavelet transform with multiresolution algorithm')
0127 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'Upsample', false);
0128 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'Upsample', false);
0129 default_multires = max(max(abs(f-f_rec)))
0130 
0131 disp('Perform axisym wavelet transform at full resolution')
0132 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'Upsample', true);
0133 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'Upsample', true);
0134 default_fullres = max(max(abs(f-f_rec)))
0135 
0136 disp('Perform axisym wavelet transform with custom parameters')
0137 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'B', B, 'L', L, 'J_min', J_min);
0138 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'B', B, 'L', L, 'J_min', J_min);
0139 custom = max(max(abs(f-f_rec)))
0140 
0141 disp('Constraint on flms to generate real signal')
0142 for el = 0:L-1
0143    ind = el*el + el + 1;
0144    flm(ind,1) = real(flm(ind,1));
0145    for m = 1:el
0146       ind_pm = el*el + el + m + 1;
0147       ind_nm = el*el + el - m + 1;
0148       flm(ind_nm,1) = (-1)^m * conj(flm(ind_pm,1));
0149    end
0150 end
0151 disp('Construct the corresponding real signal on the sphere')
0152 f_real = ssht_inverse(flm, L, 'Method', 'MW', 'Reality', true);
0153 
0154 
0155 disp('Perform multiresolution real directional wavelet transform with default parameters')
0156 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true);
0157 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true);
0158 default = max(max(abs(f_real-f_rec)))
0159 
0160 
0161 disp('Perform real axisym wavelet transform with default parameters')
0162 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Reality', true);
0163 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Reality', true);
0164 default = max(max(abs(f_real-f_real_rec)))
0165 
0166 disp('Perform real axisym wavelet transform with multiresolution algorithm')
0167 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Upsample', false, 'Reality', true);
0168 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Upsample', false, 'Reality', true);
0169 default_multires = max(max(abs(f_real-f_real_rec)))
0170 
0171 disp('Perform real axisym wavelet transform at full resolution')
0172 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Upsample', true, 'Reality', true);
0173 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Upsample', true, 'Reality', true);
0174 default_fullres = max(max(abs(f_real-f_real_rec)))
0175 
0176 disp('Perform real axisym wavelet transform with custom parameters')
0177 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'B', B, 'L', L, 'J_min', J_min, 'Reality', true);
0178 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'B', B, 'L', L, 'J_min', J_min, 'Reality', true);
0179 custom = max(max(abs(f_real-f_real_rec)))
0180

Generated on Fri 11-Nov-2016 11:50:36 by m2html © 2005