0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 clear all;
0011 close all;
0012
0013
0014 L = 32;
0015 B = 4;
0016 N = 4;
0017 Spin = 0;
0018 J_min = 1;
0019 J = s2let_jmax(L, B);
0020
0021 disp('Checks tiling of harmonic space for axysimmetric wavelets')
0022 [kappa kappa0] = s2let_transform_axisym_tiling(B, L, J_min);
0023 error_on_axisym_tiling = s2let_check_axisym_tiling(kappa, kappa0, L, J)
0024
0025 disp('Checks tiling of harmonic space for directional wavelets')
0026 [psi phi] = s2let_wavelet_tiling(B, L, N, Spin, J_min);
0027 error_on_axisym_tiling = s2let_check_tiling(psi, phi, L, Spin, J)
0028
0029 disp('Generates band-limited function')
0030 flm = zeros(L^2,1);
0031 flm = rand(size(flm)) + sqrt(-1)*rand(size(flm));
0032 flm = 2.*(flm - (1+sqrt(-1))./2);
0033 disp('Construct the corresponding signal on the sphere')
0034 f = ssht_inverse(flm, L, 'Method', 'MW');
0035 disp('Construct the corresponding spin signal on the sphere')
0036 f_s = ssht_inverse(flm, L, 'Method', 'MW', 'Spin', Spin);
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 disp('Perform scalar directional wavelet transform with default parameters')
0054 [f_wav, f_scal] = s2let_transform_analysis_mw(f, 'N', N, 'Upsample', true);
0055 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Upsample', true);
0056 default = max(max(abs(f-f_rec)))
0057
0058 disp('Perform spin directional wavelet transform with default parameters')
0059 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'N', N, 'Spin', Spin, 'Upsample', true);
0060 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Spin', Spin, 'Upsample', true);
0061 default = max(max(abs(f_s-f_rec)))
0062
0063 disp('Perform spin directional wavelet transform with custom parameters')
0064 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0065 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', false);
0066 default = max(max(abs(f_s-f_rec)))
0067
0068 disp('Perform multiresolution scalar directional wavelet transform with default parameters')
0069 [f_wav, f_scal] = s2let_transform_analysis_mw(f, 'N', N);
0070 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N);
0071 default = max(max(abs(f-f_rec)))
0072
0073 disp('Perform multiresolution spin directional wavelet transform with default parameters')
0074 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'N', N, 'Spin', Spin);
0075 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Spin', Spin);
0076 default = max(max(abs(f_s-f_rec)))
0077
0078 disp('Perform multiresolution spin directional wavelet transform with custom parameters')
0079 [f_wav, f_scal] = s2let_transform_analysis_mw(f_s, 'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', true);
0080 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'B', B, 'L', L, 'J_min', J_min, 'N', N, 'Spin', Spin, 'Upsample', true);
0081 default = max(max(abs(f_s-f_rec)))
0082
0083
0084 disp('Constraint on flms to generate real signal')
0085 for el = 0:L-1
0086 ind = el*el + el + 1;
0087 flm(ind,1) = real(flm(ind,1));
0088 for m = 1:el
0089 ind_pm = el*el + el + m + 1;
0090 ind_nm = el*el + el - m + 1;
0091 flm(ind_nm,1) = (-1)^m * conj(flm(ind_pm,1));
0092 end
0093 end
0094 disp('Construct the corresponding real signal on the sphere')
0095 f_real = ssht_inverse(flm, L, 'Method', 'MW', 'Reality', true);
0096
0097
0098 disp('Perform multiresolution real directional wavelet transform with default parameters')
0099 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true);
0100 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true);
0101 default = max(max(abs(f_real-f_rec)))
0102
0103
0104 disp('Perform full resolution real directional wavelet transform with default parameters')
0105 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true, 'Upsample', true);
0106 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true, 'Upsample', true);
0107 default = max(max(abs(f_real-f_rec)))
0108
0109 stop
0110
0111
0112 disp('Generates band-limited function')
0113 flm = zeros(L^2,1);
0114 flm = rand(size(flm)) + sqrt(-1)*rand(size(flm));
0115 flm = 2.*(flm - (1+sqrt(-1))./2);
0116 disp('Construct the corresponding signal on the sphere')
0117 f = ssht_inverse(flm, L, 'Method', 'MW');
0118 disp('Construct the corresponding spin signal on the sphere')
0119 f_s = ssht_inverse(flm, L, 'Method', 'MW', 'Spin', Spin);
0120
0121 disp('Perform axisym wavelet transform with default parameters')
0122 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f);
0123 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal);
0124 default = max(max(abs(f-f_rec)))
0125
0126 disp('Perform axisym wavelet transform with multiresolution algorithm')
0127 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'Upsample', false);
0128 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'Upsample', false);
0129 default_multires = max(max(abs(f-f_rec)))
0130
0131 disp('Perform axisym wavelet transform at full resolution')
0132 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'Upsample', true);
0133 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'Upsample', true);
0134 default_fullres = max(max(abs(f-f_rec)))
0135
0136 disp('Perform axisym wavelet transform with custom parameters')
0137 [f_wav, f_scal] = s2let_transform_axisym_analysis_mw(f, 'B', B, 'L', L, 'J_min', J_min);
0138 f_rec = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, 'B', B, 'L', L, 'J_min', J_min);
0139 custom = max(max(abs(f-f_rec)))
0140
0141 disp('Constraint on flms to generate real signal')
0142 for el = 0:L-1
0143 ind = el*el + el + 1;
0144 flm(ind,1) = real(flm(ind,1));
0145 for m = 1:el
0146 ind_pm = el*el + el + m + 1;
0147 ind_nm = el*el + el - m + 1;
0148 flm(ind_nm,1) = (-1)^m * conj(flm(ind_pm,1));
0149 end
0150 end
0151 disp('Construct the corresponding real signal on the sphere')
0152 f_real = ssht_inverse(flm, L, 'Method', 'MW', 'Reality', true);
0153
0154
0155 disp('Perform multiresolution real directional wavelet transform with default parameters')
0156 [f_wav, f_scal] = s2let_transform_analysis_mw(f_real, 'N', N, 'Reality', true);
0157 f_rec = s2let_transform_synthesis_mw(f_wav, f_scal, 'N', N, 'Reality', true);
0158 default = max(max(abs(f_real-f_rec)))
0159
0160
0161 disp('Perform real axisym wavelet transform with default parameters')
0162 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Reality', true);
0163 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Reality', true);
0164 default = max(max(abs(f_real-f_real_rec)))
0165
0166 disp('Perform real axisym wavelet transform with multiresolution algorithm')
0167 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Upsample', false, 'Reality', true);
0168 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Upsample', false, 'Reality', true);
0169 default_multires = max(max(abs(f_real-f_real_rec)))
0170
0171 disp('Perform real axisym wavelet transform at full resolution')
0172 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'Upsample', true, 'Reality', true);
0173 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'Upsample', true, 'Reality', true);
0174 default_fullres = max(max(abs(f_real-f_real_rec)))
0175
0176 disp('Perform real axisym wavelet transform with custom parameters')
0177 [f_wav_real, f_scal_real] = s2let_transform_axisym_analysis_mw(f_real, 'B', B, 'L', L, 'J_min', J_min, 'Reality', true);
0178 f_real_rec = s2let_transform_axisym_synthesis_mw(f_wav_real, f_scal_real, 'B', B, 'L', L, 'J_min', J_min, 'Reality', true);
0179 custom = max(max(abs(f_real-f_real_rec)))
0180