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 disp(' ');
0045 disp('Curvelet transform: full resolution (Upsample: true): ');
0046
0047
0048
0049 disp('Spin signal, Full resolution: analysis_px2cur ');
0050 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_spin_gen,...
0051 'B', B, 'L', L, ...
0052 'J_min', J_min,...
0053 'Spin', Spin, ...
0054 'Upsample', true);
0055 disp('Spin signal, Full resolution: synthesis_cur2px...')
0056 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0057 'B', B, 'L', L, ...
0058 'J_min', J_min,...
0059 'Spin', Spin, ...
0060 'Upsample', true);
0061
0062 disp('- Test exact transform:');
0063 disp('Check the difference between f_gen and f_rec: ');
0064 maxerr = max(abs(f_spin_gen(:) - f_rec(:)))
0065 disp('----------- ');
0066
0067
0068 disp('Curvelet transform: multi-resolution (Upsample: false): ');
0069 disp('Spin signal, Multi-resolution: analysis_px2cur...')
0070 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0071 'B', B, 'L', L, ...
0072 'J_min', J_min, ...
0073 'Spin', Spin, ...
0074 'Upsample', false);
0075
0076
0077 disp('Spin signal, Multi-resolution: synthesis_px2cur...')
0078 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0079 'B', B, 'L', L, ...
0080 'J_min', J_min,...
0081 'Spin', Spin, ...
0082 'Upsample', false);
0083
0084 disp('- Test exact transform:');
0085 disp('Check the difference between f_gen and f_rec: ');
0086 maxerr = max(abs(f_spin_gen(:) - f_rec(:)))
0087 disp('----------- ');
0088
0089
0090 disp(' ')
0091 disp('=============================')
0092 disp('REAL Signals TEST')
0093 disp('=============================')
0094
0095 disp('Constraint on flms to generate real signal')
0096
0097 for el = 0:L-1
0098 ind = el*el + el + 1;
0099 flm_gen(ind,1) = real(flm_gen(ind,1));
0100 for m = 1:el
0101 ind_pm = el*el + el + m + 1;
0102 ind_nm = el*el + el - m + 1;
0103 flm_gen(ind_nm,1) = (-1)^m * conj(flm_gen(ind_pm,1));
0104 end
0105 end
0106 f_gen = ssht_inverse(flm_gen, L,'Method', 'MW');
0107
0108 disp(' ');
0109 disp('Curvelet transform: full resolution (Upsample: true): ');
0110
0111
0112
0113 reality = true;
0114 disp('Real signal, Full resolution: analysis_px2cur ');
0115 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0116 'B', B, 'L', L, ...
0117 'J_min', J_min,...
0118 'Reality', reality, ...
0119 'Upsample', true);
0120 disp('Real signal, Full resolution: synthesis_cur2px...')
0121 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0122 'B', B, 'L', L, ...
0123 'J_min', J_min,...
0124 'Reality', reality, ...
0125 'Upsample', true);
0126
0127 disp('- Test exact transform:');
0128 disp('Check the difference between f_gen and f_rec: ');
0129 maxerr = max(abs(f_gen(:) - f_rec(:)))
0130 disp('----------- ');
0131
0132
0133 disp('Curvelet transform: multi-resolution (Upsample: false): ');
0134 disp('Real signal, Multi-resolution: analysis_px2cur...')
0135 [f_cur, f_scal] = s2let_transform_curvelet_analysis_px2cur(f_gen,...
0136 'B', B, 'L', L, ...
0137 'J_min', J_min, ...
0138 'Reality', reality, ...
0139 'Upsample', false);
0140
0141
0142 disp('Real signal, Multi-resolution: synthesis_px2cur...')
0143 f_rec = s2let_transform_curvelet_synthesis_cur2px(f_cur, f_scal, ...
0144 'B', B, 'L', L, ...
0145 'J_min', J_min,...
0146 'Reality', reality, ...
0147 'Upsample', false);
0148
0149 disp('- Test exact transform:');
0150 disp('Check the difference between f_gen and f_rec: ');
0151 maxerr = max(abs(f_gen(:) - f_rec(:)))
0152