Home > src > main > matlab > s2let_curvelet_transform_test_lm2cur_cur2lm.m

s2let_curvelet_transform_test_lm2cur_cur2lm

PURPOSE ^

s2let_curvelet_transform_test_lm2cur_cur2lm

SYNOPSIS ^

This is a script file.

DESCRIPTION ^

 s2let_curvelet_transform_test_lm2cur_cur2lm

 Run curvelet analysis (harmonic to curvelet space) and 
 synthesis (curvelet 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_lm2cur_cur2lm
0002 %
0003 % Run curvelet analysis (harmonic to curvelet space) and
0004 % synthesis (curvelet 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 = 2;             % Spin value of curvelet
0028 L = 16;               % Angular band-limit
0029 B = 2;                % B = 2 for dyadic sampling
0030 J_min = 1;            % Minimum scale probed by curvelets
0031 J =s2let_jmax(L, B);  % Maximum scale probed by curvelets =ceil(log L/ log B);
0032 
0033 disp('Generates random band-limited function')
0034 flm_gen = zeros(L^2,1);
0035 flm_gen = rand(size(flm_gen)) + sqrt(-1)*rand(size(flm_gen));
0036 flm_gen = 2.*(flm_gen - (1+sqrt(-1))./2);
0037 disp('Construct the corresponding signal on the sphere')
0038 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0039 % Spin signals:
0040 flm_spin_gen= ssht_forward(f_gen, L, 'Spin', Spin, 'Method', 'MW');
0041 f_spin_gen = ssht_inverse(flm_spin_gen, L, 'Spin', Spin, 'Method', 'MW');
0042 disp('----------- ');
0043 
0044 
0045 disp(' ');
0046 disp('Curvelet transform: full resolution (Upsample: true): ');
0047 % -----------------
0048 % Signal analysis: (harmonic to curvelet space)
0049 % -----------------
0050 % N.B. 's2let_transform_curvelet_analysis_lm2cur.m' called 's2let_curvelet_tiling.m'
0051 disp('Spin signal, Full resolution: analysis_lm2cur...')
0052 [f_cur, f_scal] = s2let_transform_curvelet_analysis_lm2cur(flm_spin_gen,  ...
0053                                                            'B', B, 'L', L, ...
0054                                                            'J_min', J_min, ...
0055                                                            'Spin', Spin, ...
0056                                                            'Upsample', true); 
0057 
0058 % -----------------
0059 % Signal synthesis: (curvelet to harmonic space)
0060 % -----------------
0061 disp('Spin signal, Full resolution: synthesis_cur2lm...')
0062 flm_spin_rec= s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal, ...
0063                                                         'B', B, 'L', L,...
0064                                                         'J_min', J_min, ...
0065                                                         'Spin', Spin, ...
0066                                                         'Upsample', true);
0067 
0068 
0069 disp('Compute the re-constructed function via ssht_inverse ');
0070 f_spin_rec = ssht_inverse(flm_spin_rec, L,'Spin', Spin,'Method', 'MW');
0071 disp('- Test exact transform:');
0072 disp('Check the difference between flm_gen and flm_rec:');
0073 maxerr = max(abs(flm_spin_gen - flm_spin_rec))
0074 disp('Check the difference between f_spin_gen and f_spin_rec: ');
0075 maxerr = max(abs(f_spin_gen(:) - f_spin_rec(:)))
0076 disp('----------- ');
0077 
0078 
0079 % ================== MULTI-RESOLUTION ===================%
0080 disp(' Curvelet transform: multi-resolution (Upsample: false): ');
0081 % -----------------
0082 % Signal analysis: (harmonic to curvelet space)
0083 % -----------------
0084 
0085 [f_cur, f_scal] = s2let_transform_curvelet_analysis_lm2cur(flm_spin_gen,  ...
0086                                                            'B', B, 'L', L, ...
0087                                                            'J_min', J_min, ...
0088                                                            'Spin', Spin, ...
0089                                                            'Sampling', 'MW',...
0090                                                            'Upsample', false);
0091 
0092 % -----------------
0093 % Signal synthesis: (curvelet to harmonic space)
0094 % -----------------
0095 flm_spin_rec= s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal, ...
0096                                                         'B', B, 'L', L,...
0097                                                         'J_min', J_min, ...
0098                                                         'Spin', Spin, ...
0099                                                         'Sampling', 'MW', ...
0100                                                         'Upsample', false);
0101 
0102 
0103 disp('Compute the re-constructed function via ssht_inverse ');
0104 f_spin_rec = ssht_inverse(flm_spin_rec, L, 'Spin', Spin, 'Method', 'MW');
0105 
0106 disp('- Test exact transform:');
0107 disp('Check the difference between flm_gen and flm_rec:');
0108 maxerr = max(abs(flm_spin_gen - flm_spin_rec))
0109 disp('Check the difference between f_spin_gen and f_spin_rec: ');
0110 maxerr = max(abs(f_spin_gen(:) - f_spin_rec(:)))
0111 disp('----------- ');
0112 
0113 
0114 disp(' ')
0115 disp('=============================')
0116 disp('REAL Signals TEST')
0117 disp('=============================')
0118 % -------------------------
0119 disp('Constraint on flms to generate real signal')
0120 % -------------------------
0121 for el = 0:L-1
0122     ind = el*el + el + 1;
0123     flm_gen(ind,1) = real(flm_gen(ind,1));
0124     for m = 1:el
0125         ind_pm = el*el + el + m + 1;
0126         ind_nm = el*el + el - m + 1;
0127         flm_gen(ind_nm,1) = (-1)^m * conj(flm_gen(ind_pm,1));
0128     end
0129 end
0130 reality = true; 
0131 
0132 
0133 % ================== FULL-RESOLUTION ===================%
0134 disp(' Curvelet transform: Full-resolution (Upsample: true): ');
0135 % -----------------
0136 % Signal analysis: (harmonic to curvelet space)
0137 % -----------------
0138 disp('Real signal, Full resolution: analysis_lm2cur...')
0139 upsample = true; 
0140 [f_cur, f_scal]= s2let_transform_curvelet_analysis_lm2cur(flm_gen, ...
0141                                                           'B', B, 'L', L,...
0142                                                           'J_min', J_min,...
0143                                                           'Reality', reality, ...
0144                                                           'Upsample', upsample);
0145 % -----------------
0146 % Signal synthesis: (curvelet to harmonic space)
0147 % -----------------
0148 disp('Real signal, Full resolution: synthesis_cur2lm...')
0149 flm_rec  = s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal,  ...
0150                                                      'B', B, 'L', L, ...
0151                                                      'J_min', J_min,...
0152                                                      'Reality', reality,...
0153                                                      'Upsample', upsample);
0154 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0155 f_rec = ssht_inverse(flm_rec, L,'Method', 'MW');
0156 disp('- Test exact transform:');
0157 disp('Check the difference between flm_gen and flm_rec:');
0158 maxerr = max(abs(flm_gen - flm_rec))
0159 disp('Check the difference between f_gen and f_rec: ');
0160 maxerr = max(abs(f_gen(:) - f_rec(:)))
0161 disp('----------- ');
0162 
0163 
0164 % ================== MULTI-RESOLUTION ===================%
0165 disp(' Curvelet transform: Multi-resolution (Upsample: false): ');
0166 % -----------------
0167 % Signal analysis: (harmonic to curvelet space)
0168 % -----------------
0169 upsample = false; 
0170 disp('Real signal, Multi-reolution: analysis_lm2cur...')
0171 [f_cur, f_scal]= s2let_transform_curvelet_analysis_lm2cur(flm_gen, ...
0172                                                           'B', B, 'L', L, ...
0173                                                           'J_min', J_min,...
0174                                                           'Reality', reality, ...
0175                                                           'Upsample', upsample);
0176 % -----------------
0177 % Signal synthesis: (curvelet to harmonic space)
0178 % -----------------
0179 disp('Real signal, Multi-reolution: synthesis_cur2lm...')
0180 flm_rec  = s2let_transform_curvelet_synthesis_cur2lm(f_cur, f_scal,  ...
0181                                                      'B', B, 'L', L, ...
0182                                                      'J_min', J_min,...
0183                                                      'Reality', reality,...
0184                                                      'Upsample',upsample);
0185 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0186 f_rec = ssht_inverse(flm_rec, L,'Method', 'MW');
0187 disp('- Test exact transform:');
0188 disp('Check the difference between flm_gen and flm_rec:');
0189 maxerr = max(abs(flm_gen - flm_rec))
0190 disp('Check the difference between f_gen and f_rec: ');
0191 maxerr = max(abs(f_gen(:) - f_rec(:)))
0192 disp('----------- ');

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