0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 clear all;
0024 close all;
0025
0026
0027 Spin = 2;
0028 L = 16;
0029 B = 2;
0030 J_min = 1;
0031 J =s2let_jmax(L, 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
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
0049
0050
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
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
0080 disp(' Curvelet transform: multi-resolution (Upsample: false): ');
0081
0082
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
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
0134 disp(' Curvelet transform: Full-resolution (Upsample: true): ');
0135
0136
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
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
0165 disp(' Curvelet transform: Multi-resolution (Upsample: false): ');
0166
0167
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
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('----------- ');