Home > src > main > matlab > s2let_curvelet_transform_test_lm2lmn_lmn2lm.m

s2let_curvelet_transform_test_lm2lmn_lmn2lm

PURPOSE ^

s2let_curvelet_transform_test_lm2lmn_lmn2lm

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 s2let_curvelet_transform_test_lm2lmn_lmn2lm

 Run curvelet analysis (harmonic to Wigner space) and 
 synthesis (Wigner to harmonic space)
 of randomly generated signals f and check exactness

 Options consist of parameter type and value pairs.
 Valid options include:
  'B'               = { Dilation factor; B > 1 (default = 2) }
  'L'               = { Harmonic band-limit; L > 0 (default = Lguessed) }
  'J_min'           = { the minimal wavelet scale,(default = 0)}
  'Spin'            = { Spin number; Spin >= 0 (default = 0) }
  'Reality'         = { false   [do not assume corresponding signal f real (default)],
                        true    [assume f real (improves performance)] }
  'Upsample'        = { false   [multiresolution algorithm (default)],
                        true    [full resolution wavelets] },
 -----------------------------------------------------------
 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_curvelet_transform_test_lm2lmn_lmn2lm
0002 %
0003 % Run curvelet analysis (harmonic to Wigner space) and
0004 % synthesis (Wigner to harmonic space)
0005 % of randomly generated signals f and check exactness
0006 %
0007 % Options consist of parameter type and value pairs.
0008 % Valid options include:
0009 %  'B'               = { Dilation factor; B > 1 (default = 2) }
0010 %  'L'               = { Harmonic band-limit; L > 0 (default = Lguessed) }
0011 %  'J_min'           = { the minimal wavelet scale,(default = 0)}
0012 %  'Spin'            = { Spin number; Spin >= 0 (default = 0) }
0013 %  'Reality'         = { false   [do not assume corresponding signal f real (default)],
0014 %                        true    [assume f real (improves performance)] }
0015 %  'Upsample'        = { false   [multiresolution algorithm (default)],
0016 %                        true    [full resolution wavelets] },
0017 % -----------------------------------------------------------
0018 % S2LET package to perform Wavelet Transform on the Sphere.
0019 % Copyright (C) 2012-2016  Boris Leistedt, Jennifer Chan & Jason McEwen
0020 % See LICENSE.txt for license details
0021 % -----------------------------------------------------------
0022 
0023 clear all ;
0024 close all;
0025 
0026 % Curvelet parameters
0027 Spin = 0;             % Spin value of curvelet
0028 L = 16;               % Angular band-limit
0029 B = 2;                % B = 2 for dyadic sampling
0030 J_min = 2;            % Minimum scale probed by curvelets
0031 J =s2let_jmax(L, B);  % Maximum scale probed by curvelets =ceil(log L/ log B);
0032 
0033 
0034 disp('Generates random band-limited function')
0035 flm_gen = zeros(L^2,1);
0036 flm_gen = rand(size(flm_gen)) + sqrt(-1)*rand(size(flm_gen));
0037 flm_gen = 2.*(flm_gen - (1+sqrt(-1))./2);
0038 disp('Construct the corresponding signal on the sphere')
0039 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0040 disp('Construct the corresponding spin signal on the sphere')
0041 f_spin_gen = ssht_inverse(flm_gen, L, 'Spin', Spin, 'Method', 'MW');
0042 flm_spin_gen= ssht_forward(f_spin_gen, L, 'Spin', Spin, 'Method', 'MW');
0043 disp('----------- ');
0044 
0045 
0046 % ---------------
0047 % Tile curvelets:
0048 % ---------------
0049 disp('curvelet_tiling: Tile curvelets in harmonic space (cur_lm, scal_l)')
0050 % Call curvelet- and scaling-function- generating functions
0051 [cur_lm scal_l] = s2let_curvelet_tiling(B, L, J_min, ...
0052                                             'Spin', Spin, 'SpinLowered', false,  'SpinLoweredFrom', 0);
0053 % Check tiling error:
0054 disp('Check if admissibility condition is satisfied: ');  
0055 error_on_cur_tiling = s2let_check_cur_tiling(cur_lm, scal_l, L, Spin, J, J_min)
0056 disp('----------- ');  
0057 
0058 
0059 disp(' ');
0060 % ================== FULL-RESOLUTION ===================%
0061 disp('Curvelet transform: Full resolution (Upsample: true)');
0062 % -----------------
0063 % Signal analysis: (harmonic to Wigner space)
0064 % -----------------
0065 disp('Spin signal, Full resolution: analysis_lm2lmn...')
0066 [f_cur_lmn, f_scal_lm] = s2let_transform_curvelet_analysis_lm2lmn(flm_spin_gen, cur_lm, scal_l, ...
0067                                                                   'B', B, 'L', L, 'J_min', J_min,...
0068                                                                   'Spin', Spin, ...
0069                                                                   'Reality', false, ...
0070                                                                   'Upsample', true,...
0071                                                                   'SpinLowered', false, ...
0072                                                                   'SpinLoweredFrom', 0);
0073 % -----------------
0074 % Signal synthesis: (Wigner to harmonic space)
0075 % -----------------
0076 disp('Spin signal, Full resolution: synthesis_lmn2lm...')
0077 flm_spin_rec  = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l, ...
0078                                                          'B', B, 'L', L, 'J_min', J_min,...
0079                                                          'Spin', Spin, ...
0080                                                          'Reality', false,...
0081                                                          'Upsample', true,...
0082                                                          'SpinLowered', false, ...
0083                                                          'SpinLoweredFrom', 0);
0084                                        
0085 disp('Compute the re-constructed function via ssht_inverse ');
0086 f_spin_rec = ssht_inverse(flm_spin_rec, L, 'Spin', Spin, 'Method', 'MW');
0087 disp('- Test exact transform:');
0088 disp('Check the difference between flm_gen and flm_rec:');
0089 maxerr = max(abs(flm_spin_gen - flm_spin_rec))
0090 disp('Check the difference between f_gen and f_rec: ');
0091 maxerr = max(abs(f_spin_gen(:) - f_spin_rec(:)))
0092 disp('----------- ');           
0093 
0094 % ================== MULTI-RESOLUTION ===================%
0095 disp('Curvelet transform: multiresolution (Upsample: false): ');
0096 % -----------------
0097 % Signal analysis: (harmonic to wigner space)
0098 % -----------------
0099 disp('Spin signal, Multi-resolution: analysis_lm2lmn...')
0100 [f_cur_lmn, f_scal_lm] = s2let_transform_curvelet_analysis_lm2lmn(flm_spin_gen, cur_lm, scal_l, ...
0101                                                                   'B', B, 'L', L, 'J_min', J_min,...
0102                                                                   'Spin', Spin, ...
0103                                                                   'Reality', false, ...
0104                                                                   'Upsample', false,...
0105                                                                   'SpinLowered', false, ...
0106                                                                   'SpinLoweredFrom', 0);
0107 % -----------------
0108 % Signal synthesis: (pixel to harmonic space)
0109 % -----------------
0110 disp('Spin signal, Multi-resolution: synthesis_lmn2lm...')
0111 flm_spin_rec  = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l, ...
0112                                                           'B', B, 'L', L, 'J_min', J_min,...
0113                                                           'Spin', Spin, ...
0114                                                           'Reality', false,...
0115                                                           'Upsample', false,...
0116                                                           'SpinLowered', false, ...
0117                                                           'SpinLoweredFrom', 0);
0118 
0119 disp('Compute the re-constructed function via ssht_inverse ');
0120 f_spin_rec = ssht_inverse(flm_spin_rec, L, 'Spin', Spin, 'Method', 'MW');
0121 disp('- Test exact transform:');
0122 disp('Check the difference between flm_gen and flm_rec:');
0123 maxerr = max(abs(flm_spin_gen - flm_spin_rec))
0124 disp('Check the difference between f_gen and f_rec: ');
0125 maxerr = max(abs(f_spin_gen(:) - f_spin_rec(:)))
0126 disp('----------- ');
0127 
0128 
0129 disp(' ')
0130 disp('=============================')
0131 disp('REAL Signals TEST')
0132 disp('=============================')
0133 % -------------------------
0134 disp('Constraint on flms to generate real signal')
0135 % -------------------------
0136 for el = 0:L-1
0137     ind = el*el + el + 1;
0138     flm_gen(ind,1) = real(flm_gen(ind,1));
0139     for m = 1:el
0140        ind_pm = el*el + el + m + 1;
0141        ind_nm = el*el + el - m + 1;
0142        flm_gen(ind_nm,1) = (-1)^m * conj(flm_gen(ind_pm,1));
0143     end
0144 end
0145 
0146 % ---------------
0147 % Tile spin-0 curvelets:
0148 % ---------------
0149 disp('Real signal: curvelet_tiling: Tile spin-0 curvelets in harmonic space (cur_lm, scal_l)')
0150 [cur_lm scal_l] = s2let_curvelet_tiling(B, L, J_min, 'Spin', 0);
0151 disp('----------- ');    
0152 
0153 % ================== FULL-RESOLUTION ===================%
0154 disp('Curvelet transform: Full-resolution (Upsample: true): ');
0155 % -----------------
0156 % Signal analysis: (harmonic to Wigner space)
0157 % -----------------
0158 disp('Real signal, Full resolution: analysis_lm2lmn...')
0159 [f_cur_lmn, f_scal_lm] = s2let_transform_curvelet_analysis_lm2lmn(flm_gen, cur_lm, scal_l, ...
0160                                                                   'B', B, 'L', L, 'J_min', J_min,...
0161                                                                   'Reality', true, ...
0162                                                                   'Upsample', true);
0163 % -----------------
0164 % Signal synthesis: (Wigner to harmonic space)
0165 % -----------------
0166 disp('Real signal, Full resolution: synthesis_lmn2lm...')
0167 flm_rec  = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l, ...
0168                                                      'B', B, 'L', L, 'J_min', J_min,...
0169                                                      'Reality', true,...
0170                                                      'Upsample', true);
0171 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0172 f_rec = ssht_inverse(flm_rec, L,'Method', 'MW');
0173 disp('- Test exact transform:');
0174 disp('Check the difference between flm_gen and flm_rec:');
0175 maxerr = max(abs(flm_gen - flm_rec))
0176 disp('Check the difference between f_gen and f_rec: ');
0177 maxerr = max(abs(f_gen(:) - f_rec(:)))
0178 disp('----------- ');          
0179 
0180 % ================== MULTI-RESOLUTION ===================%
0181 disp('Curvelet transform: Multi-resolution (Upsample: false): ');
0182 % -----------------
0183 % Signal analysis: (harmonic to Wigner space)
0184 % -----------------
0185 disp('Real signal, Multi-reolution: analysis_lm2lmn...')
0186 [f_cur_lmn, f_scal_lm] = s2let_transform_curvelet_analysis_lm2lmn(flm_gen, cur_lm, scal_l, ...
0187                                                                   'B', B, 'L', L, 'J_min', J_min,...
0188                                                                   'Reality', true, ...
0189                                                                   'Upsample', false);
0190 % -----------------
0191 % Signal synthesis: (Wigner to harmonic space)
0192 % -----------------
0193 disp('Real signal, Multi-reolution: synthesis_lmn2lm...')
0194 flm_rec  = s2let_transform_curvelet_synthesis_lmn2lm(f_cur_lmn, f_scal_lm, cur_lm, scal_l, ...
0195                                                      'B', B, 'L', L, 'J_min', J_min,...
0196                                                      'Reality', true,...
0197                                                      'Upsample', false);
0198 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0199 f_rec = ssht_inverse(flm_rec, L,'Method', 'MW');
0200 disp('- Test exact transform:');
0201 disp('Check the difference between flm_gen and flm_rec:');
0202 maxerr = max(abs(flm_gen - flm_rec))
0203 disp('Check the difference between f_gen and f_rec: ');
0204 maxerr = max(abs(f_gen(:) - f_rec(:)))
0205 disp('----------- ');

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