s2let_transform_axisym_synthesis_mw Compute axisymmetric wavelet transform, output in pixel space. Default usage : f = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, <options>) f_wav contains the input wavelet contributions -- MW sampling, f_scal contains the input scaling contributions -- MW sampling, f is the output field -- MW sampling, Option : 'Reality' = { false [do not assume f real (default)], true [assume f real (improves performance)] } 'B' = { Dilation factor; B > 1 (default=2) } 'L' = { Harmonic band-limit; L > 1 (default=guessed from input) } 'Upsample' = { false [multiresolution algorithm (default)], true [full resolution wavelets] } 'J_min' = { Minimum wavelet scale to consider; 0 <= J_min < log_B(L) (default=0) } S2LET package to perform Wavelets transform on the Sphere. Copyright (C) 2012-2015 Boris Leistedt & Jason McEwen See LICENSE.txt for license details
0001 function f = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, varargin) 0002 0003 % s2let_transform_axisym_synthesis_mw 0004 % Compute axisymmetric wavelet transform, output in pixel space. 0005 % 0006 % Default usage : 0007 % 0008 % f = s2let_transform_axisym_synthesis_mw(f_wav, f_scal, <options>) 0009 % 0010 % f_wav contains the input wavelet contributions -- MW sampling, 0011 % f_scal contains the input scaling contributions -- MW sampling, 0012 % f is the output field -- MW sampling, 0013 % 0014 % Option : 0015 % 'Reality' = { false [do not assume f real (default)], 0016 % true [assume f real (improves performance)] } 0017 % 'B' = { Dilation factor; B > 1 (default=2) } 0018 % 'L' = { Harmonic band-limit; L > 1 (default=guessed from input) } 0019 % 'Upsample' = { false [multiresolution algorithm (default)], 0020 % true [full resolution wavelets] } 0021 % 'J_min' = { Minimum wavelet scale to consider; 0022 % 0 <= J_min < log_B(L) (default=0) } 0023 % 0024 % S2LET package to perform Wavelets transform on the Sphere. 0025 % Copyright (C) 2012-2015 Boris Leistedt & Jason McEwen 0026 % See LICENSE.txt for license details 0027 0028 len = size(f_wav); 0029 temp = f_wav{len}; 0030 sz = size(temp); 0031 if sz(1) == 2*sz(2)-1 || sz(2) == 2*sz(1)-1 0032 Lguessed = min([sz(1) sz(2)]); 0033 else 0034 Lguessed = min([sz(1) sz(2)])-1; 0035 end 0036 0037 p = inputParser; 0038 p.addRequired('f_wav'); 0039 p.addRequired('f_scal', @isnumeric); 0040 p.addParamValue('B', 2, @isnumeric); 0041 p.addParamValue('L', Lguessed, @isnumeric); 0042 p.addParamValue('J_min', 0, @isnumeric); 0043 p.addParamValue('Upsample', false, @islogical); 0044 p.addParamValue('Reality', false, @islogical); 0045 p.parse(f_wav, f_scal, varargin{:}); 0046 args = p.Results; 0047 0048 f_scal_vec = s2let_mw_arr2vec(f_scal); 0049 0050 J = s2let_jmax(args.L, args.B); 0051 f_wav_vec = []; 0052 0053 offset = 0; 0054 for j = args.J_min:J 0055 if args.Upsample 0056 band_limit = args.L; 0057 else 0058 band_limit = min([ s2let_bandlimit(j,args.J_min,args.B,args.L) args.L ]); 0059 end 0060 temp = f_wav{j+1-args.J_min}; 0061 for t = 0:band_limit-1 0062 for p = 0:2*band_limit-2 0063 ind = offset + t * ( 2 * band_limit - 1) + p + 1; 0064 f_wav_vec = [f_wav_vec temp(t+1,p+1)]; 0065 end 0066 end 0067 offset = offset + band_limit * (2 * band_limit - 1); 0068 end 0069 0070 f_vec = s2let_transform_axisym_synthesis_mw_mex(f_wav_vec, f_scal_vec, args.B, args.L, args.J_min, args.Reality, args.Upsample); 0071 0072 f = s2let_mw_vec2arr(f_vec); 0073 0074 end