Home > src > main > matlab > s2let_fulltest_curvelet.m

s2let_fulltest_curvelet

PURPOSE ^

s2let_fulltest_curvelet

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 s2let_fulltest_curvelet
 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 Wavelet Transform on the Sphere.
 Copyright (C) 2012-2016  Boris Leistedt, Jennifer Chan & Jason McEwen
 See LICENSE.txt for license details
 -----------------------------------------------------------

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % s2let_fulltest_curvelet
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 % -----------------------------------------------------------
0007 % S2LET package to perform Wavelet Transform on the Sphere.
0008 % Copyright (C) 2012-2016  Boris Leistedt, Jennifer Chan & Jason McEwen
0009 % See LICENSE.txt for license details
0010 % -----------------------------------------------------------
0011 
0012 clear all;
0013 close all;
0014 
0015 % Curvelet parameters
0016 L = 64;
0017 B = 2; 
0018 Spin = 0;  
0019 J_min = 1; 
0020 J = s2let_jmax(L, B);
0021 disp('-------------') 
0022 % ------------------------
0023 % Tile curvelets:
0024 % ------------------------
0025 disp('Checks the harmonic tiling of curvelets')
0026 [cur_lm scal_l] = s2let_curvelet_tiling(B, L, J_min, ...
0027                                         'Spin', Spin, 'SpinLowered', false,  'SpinLoweredFrom', 0);
0028 error_on_cur_tiling = s2let_check_cur_tiling(cur_lm, scal_l, L, Spin, J, J_min)
0029 
0030 
0031 % -------------------------
0032 disp('Generate random band-limited (complex) function')
0033 % -------------------------
0034 flm_gen_cur = zeros(L^2,1);
0035 flm_gen_cur = rand(size(flm_gen_cur)) + sqrt(-1)*rand(size(flm_gen_cur));
0036 flm_gen_cur = 2.*(flm_gen_cur - (1+sqrt(-1))./2);
0037 disp('Construct the corresponding signal on the sphere')
0038 f_gen_cur = ssht_inverse(flm_gen_cur, L, 'Method', 'MW');
0039 % -------------------------
0040 disp('Construct the corresponding spin signal on the sphere')
0041 % -------------------------
0042 f_spin_gen_cur = ssht_inverse(flm_gen_cur, L, 'Spin', Spin, 'Method', 'MW');
0043 flm_spin_gen_cur = ssht_forward(f_spin_gen_cur, L, 'Spin', Spin, 'Method', 'MW');
0044 
0045 
0046 disp('==============')
0047 disp('Complex Signals, Full resolution tests start (Upsample: true):')
0048 disp('==============')
0049 disp('ana_lm2lmn : Perform (spin) harmonic-to-Wigner transform (lm2lmn) with custom parameters')
0050 [f_cur_lmn, f_scal_lm]= s2let_transform_curvelet_analysis_lm2lmn(flm_spin_gen_cur, cur_lm, scal_l, ...
0051                                                                  'B', B, 'L', L, 'J_min', J_min,...
0052                                                                  'Spin', Spin, ...
0053                                                                  'Reality', false,...
0054                                                                  'Upsample', true,...
0055                                                                  'SpinLowered', false, ...
0056                                                                  'SpinLoweredFrom', 0);
0057 disp('syn_lmn2lm : Perform inverse transform (lmn2lm) with custom parameters')
0058 flm_rec_spin_lmn2lm_custom = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l,...
0059                                                                       'B', B, 'L', L, 'J_min', J_min,...
0060                                                                       'Spin', Spin,  ...
0061                                                                       'Reality', false,...
0062                                                                       'Upsample', true,...
0063                                                                       'SpinLowered', false, ...
0064                                                                       'SpinLoweredFrom', 0);
0065 default = max(abs(flm_spin_gen_cur - flm_rec_spin_lmn2lm_custom))
0066 
0067 disp('-------------')
0068 disp('ana_lm2cur: Perform (spin) harmonic-to-curvelet transform (lm2cur) with custom parameters')
0069 [f_cur, f_scal] = s2let_transform_curvelet_analysis_lm2cur(flm_spin_gen_cur, ...
0070                                                            'B', B, 'L', L, 'J_min', J_min,...
0071                                                            'Spin', Spin, 'Upsample',true);
0072 disp('syn_cur2lm:  Perform inverse transform (cur2lm) with custom parameters')
0073 flm_rec_spin_lm2cur_custom = s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal,...
0074                                                                        'B', B, 'L', L, 'J_min', J_min, ...
0075                                                                        'Spin', Spin, 'Upsample', true);
0076 default = max(abs(flm_spin_gen_cur - flm_rec_spin_lm2cur_custom))
0077 
0078 disp('-------------')
0079 disp('ana_px2cur: Perform (spin) curvelet transform (px2cur) with custom parameters')
0080 % c.f. s2let_transform_analysis_mw.m for directional wavelet
0081 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen_cur ,...
0082                                                     'B', B, 'L', L, ...
0083                                                     'J_min', J_min, 'Spin', Spin, ...
0084                                                     'Upsample', true, 'Reality', false,...
0085                                                     'SpinLowered', false, ...
0086                                                     'SpinLoweredFrom', 0);
0087 disp('syn_cur2px: Perform inverse transform (cur2px) with custom parameters')
0088 % c.f. s2let_transform_synthesis_mw.m for directional wavelet
0089 f_rec_spin_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal,  ...
0090                                                     'B', B, 'L', L, ...
0091                                                     'J_min', J_min, 'Spin', Spin, ...
0092                                                     'Upsample', true, 'Reality', false,...
0093                                                     'SpinLowered', false, ...
0094                                                     'SpinLoweredFrom', 0);
0095 default = max(abs(f_spin_gen_cur(:)-f_rec_spin_px2cur_custom(:)))
0096 
0097 disp('')
0098 disp(' - CHECK also: the Spin Curvelet Transform of spin signals in MW sampling with default parapmeters:')
0099 disp('ana_px2cur: Perform (spin) curvelet transform with default parameters')
0100 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen_cur,...
0101                                                           'Spin', Spin, ...
0102                                                           'Upsample', true);
0103 disp('syn_cur2px: Perform inverse transform (cur2px) with default parameters')
0104 f_rec_spin_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0105                                                                       'Spin', Spin, ...
0106                                                                       'Upsample', true);
0107 default = max(abs(f_spin_gen_cur(:)-f_rec_spin_px2cur_custom(:)))
0108 
0109 disp('')
0110 disp(' -CHECK also: the Spin Curvelet Transform of scalar signalsin MW sampling with default parapmeters:')
0111 disp('ana_px2cur: Perform (scalar) curvelet transform with default parameters')
0112 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen_cur,...
0113                                                            'Upsample', true);
0114 disp('syn_cur2px: Perform inverse transform (cur2px) with default parameters')
0115 f_rec_spin_px2cur =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal,  ...
0116                                                                'Upsample', true);
0117 default = max(abs(f_gen_cur(:)-f_rec_spin_px2cur(:)))
0118 
0119 
0120 disp('')
0121 disp('==============')
0122 disp('Complex Signals, Multi-resolution tests start (Upsample: false):')
0123 disp('==============')
0124 disp('ana_lm2lmn : Perform (spin) harmonic-to-Wigner transform (lm2lmn) with custom parameters')
0125 [f_cur_lmn, f_scal_lm]= s2let_transform_curvelet_analysis_lm2lmn(flm_spin_gen_cur, cur_lm, scal_l, ...
0126                                                                  'B', B, 'L', L, 'J_min', J_min,...
0127                                                                  'Spin', Spin, ...
0128                                                                  'Reality', false,...
0129                                                                  'Upsample', false,...
0130                                                                  'SpinLowered', false, ...
0131                                                                  'SpinLoweredFrom', 0);
0132 disp('syn_lmn2lm : Perform inverse transform (lmn2lm) with custom parameters')
0133 flm_rec_spin_lmn2lm_custom = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l,...
0134                                                                       'B', B, 'L', L, 'J_min', J_min,...
0135                                                                       'Spin', Spin,  ...
0136                                                                       'Reality', false,...
0137                                                                       'Upsample', false,...
0138                                                                       'SpinLowered', false, ...
0139                                                                       'SpinLoweredFrom', 0);
0140 default = max(abs(flm_spin_gen_cur - flm_rec_spin_lmn2lm_custom))
0141 
0142 disp('-------------')
0143 disp('ana_lm2cur: Perform (spin) harmonic-to-curvelet transform (lm2cur) with custom parameters')
0144 [f_cur, f_scal] = s2let_transform_curvelet_analysis_lm2cur(flm_spin_gen_cur, ...
0145                                                            'B', B, 'L', L, 'J_min', J_min,...
0146                                                            'Spin', Spin, 'Upsample',false);
0147 disp('syn_cur2lm:  Perform inverse transform (cur2lm) with custom parameters')
0148 flm_rec_spin_lm2cur_custom = s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal,...
0149                                                                        'B', B, 'L', L, 'J_min', J_min, ...
0150                                                                        'Spin', Spin, 'Upsample', false);
0151 default = max(abs(flm_spin_gen_cur - flm_rec_spin_lm2cur_custom))
0152 
0153 disp('-------------')
0154 disp('ana_px2cur: Perform (spin) curvelet transform (px2cur) with custom parameters')
0155 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen_cur ,...
0156                                                     'B', B, 'L', L, ...
0157                                                     'J_min', J_min, 'Spin', Spin, ...
0158                                                     'Upsample', false, 'Reality', false,...
0159                                                     'SpinLowered', false, ...
0160                                                     'SpinLoweredFrom', 0);
0161 disp('syn_cur2px: Perform inverse transform (cur2px) with custom parameters')
0162 f_rec_spin_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal,  ...
0163                                                     'B', B, 'L', L, ...
0164                                                     'J_min', J_min, 'Spin', Spin, ...
0165                                                     'Upsample', false, 'Reality', false,...
0166                                                     'SpinLowered', false, ...
0167                                                     'SpinLoweredFrom', 0);
0168 default = max(abs(f_spin_gen_cur(:)-f_rec_spin_px2cur_custom(:)))
0169 
0170 disp('')
0171 disp('- CHECK also: the Spin Curvelet Transform of spin signals in MW sampling with default parameters:')
0172 disp('ana_px2cur: Perform (spin) curvelet transform with default parameters')
0173 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen_cur,...
0174                                                            'Spin', Spin);
0175 disp('syn_cur2px: Perform inverse transform (cur2px) with default parameters')
0176 f_rec_spin_px2cur=  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0177                                                               'Spin', Spin);
0178 default = max(abs(f_spin_gen_cur(:)-f_rec_spin_px2cur(:)))
0179 
0180 disp('')
0181 disp('- CHECK also: the Spin Curvelet Transform of scalar signals in MW sampling with default parameters:')
0182 disp('ana_px2cur: Perform (scalar) curvelet transform with default parameters')
0183 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen_cur);
0184 disp('syn_cur2px: Perform inverse transform (cur2px) with default parameters')
0185 f_rec_spin_px2cur =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal);
0186 default = max(abs(f_gen_cur(:)-f_rec_spin_px2cur(:)))
0187 
0188 
0189 disp(' ')
0190 disp('==============')
0191 disp('REAL Signals TEST')
0192 disp('==============')
0193 % -------------------------
0194 disp('Constraint on flms to generate real signal')
0195 % -------------------------
0196 for el = 0:L-1
0197 ind = el*el + el + 1;
0198 flm_gen_cur(ind,1) = real(flm_gen_cur(ind,1));
0199 for m = 1:el
0200 ind_pm = el*el + el + m + 1;
0201 ind_nm = el*el + el - m + 1;
0202 flm_gen_cur(ind_nm,1) = (-1)^m * conj(flm_gen_cur(ind_pm,1));
0203 end
0204 end
0205 disp('Construct the corresponding real signal on the sphere')
0206 f_real_gen = ssht_inverse(flm_gen_cur, L, 'Method', 'MW', 'Reality', true);
0207 
0208 disp('ana_px2cur: Perform (REAL) curvelet transform (px2cur) with custom parameters')
0209 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_real_gen ,...
0210                                                     'B', B, 'L', L, ...
0211                                                     'J_min', J_min,  ...
0212                                                     'Upsample', true, ...
0213                                                     'Reality', true);
0214 disp('syn_cur2px: Perform inverse transform (cur2px) with custom parameters')
0215 f_rec_real_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal,  ...
0216                                                     'B', B, 'L', L, ...
0217                                                     'J_min', J_min, ...
0218                                                     'Upsample', true, ...
0219                                                     'Reality',true);
0220 default = max(abs(f_real_gen(:)- f_rec_real_px2cur_custom(:)))
0221 
0222 
0223 
0224 disp('')
0225 disp('==============')
0226 disp('Rea, Signals, Multi-resolution tests start (Upsample: false):')
0227 disp('==============')
0228 disp('ana_px2cur: Perform (REAL) curvelet transform (px2cur) with custom parameters')
0229 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_real_gen ,...
0230                                                     'B', B, 'L', L, ...
0231                                                     'J_min', J_min,  ...
0232                                                     'Upsample', false, ...
0233                                                     'Reality', true);
0234 disp('syn_cur2px: Perform inverse transform (cur2px) with custom parameters')
0235 f_rec_real_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal,  ...
0236                                                     'B', B, 'L', L, ...
0237                                                     'J_min', J_min, ...
0238                                                     'Upsample', false, ...
0239                                                     'Reality',true);
0240 default = max(abs(f_real_gen(:)- f_rec_real_px2cur_custom(:)))
0241 
0242 
0243 disp('')
0244 disp('==============')
0245 disp('Real Signals, DEFAULT parameters:')
0246 disp('==============')
0247 disp('- CHECK also: the REAL Curvelet Transform of scalar signals in MW sampling with default parameters:')
0248 disp('ana_px2cur: Perform (scalar) curvelet transform with default parameters')
0249 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_real_gen ,'Reality', true);
0250 disp('syn_cur2px: Perform inverse transform (cur2px) with default parameters')
0251 f_rec_real_px2cur_custom =  s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, 'Reality',true);
0252 default = max(abs(f_real_gen(:)- f_rec_real_px2cur_custom(:)))
0253 
0254 
0255 
0256

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