0001 function flm = s2let_transform_synthesis_lm2wav(f_wav, f_scal, varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 len = size(f_wav);
0037 temp = f_wav{len};
0038 sz = size(temp);
0039 if sz(1) == 2*sz(2)-1 || sz(2) == 2*sz(1)-1
0040 Lguessed = min([sz(1) sz(2)]);
0041 else
0042 Lguessed = min([sz(1) sz(2)])-1;
0043 end
0044
0045 p = inputParser;
0046 p.addRequired('f_wav');
0047 p.addRequired('f_scal', @isnumeric);
0048 p.addParamValue('B', 2, @isnumeric);
0049 p.addParamValue('L', Lguessed, @isnumeric);
0050 p.addParamValue('J_min', 0, @isnumeric);
0051 p.addParamValue('N', Lguessed, @isnumeric);
0052 p.addParamValue('Spin', 0, @isnumeric);
0053 p.addParamValue('Upsample', false, @islogical);
0054 p.addParamValue('Sampling', 'MW', @ischar);
0055 p.addParamValue('Reality', false, @islogical);
0056 p.addParamValue('OriginalSpin', 0, @isnumeric);
0057 p.parse(f_wav, f_scal, varargin{:});
0058 args = p.Results;
0059
0060 if strcmp(args.Sampling, 'MWSS')
0061 f_scal_vec = s2let_mwss_arr2vec(f_scal);
0062 else
0063 f_scal_vec = s2let_mw_arr2vec(f_scal);
0064 end
0065 if(all(isreal(f_scal_vec)))
0066 f_scal_vec = complex(f_scal_vec,0);
0067 end
0068 J = s2let_jmax(args.L, args.B);
0069
0070 f_wav_vec = [];
0071
0072 offset = 0;
0073 if strcmp(args.Sampling, 'MWSS')
0074 for j = args.J_min:J
0075 for en = 1:args.N
0076 if args.Upsample
0077 band_limit = args.L;
0078 else
0079 band_limit = min([ s2let_bandlimit(j,args.J_min,args.B,args.L) args.L ]);
0080 end
0081 temp = f_wav{j+1-args.J_min, en};
0082 for t = 1:band_limit+1
0083 for p = 1:2*band_limit
0084 ind = offset + (t-1) * 2 * band_limit + p;
0085 f_wav_vec = [f_wav_vec temp(t,p)];
0086 end
0087 end
0088 offset = offset + (band_limit+1) * 2 * band_limit;
0089 end
0090 end
0091 else
0092 for j = args.J_min:J
0093 for en = 1:args.N
0094 if args.Upsample
0095 band_limit = args.L;
0096 else
0097 band_limit = min([ s2let_bandlimit(j,args.J_min,args.B,args.L) args.L ]);
0098 end
0099 temp = f_wav{j+1-args.J_min, en};
0100 for t = 1:band_limit
0101 for p = 1:2*band_limit-1
0102 ind = offset + (t-1) * ( 2 * band_limit - 1) + p;
0103 f_wav_vec = [f_wav_vec temp(t,p)];
0104 end
0105 end
0106 offset = offset + band_limit * (2 * band_limit - 1);
0107 end
0108 end
0109 end
0110
0111
0112 if(all(isreal(f_wav_vec)))
0113 f_wav_vec = complex(f_wav_vec,0);
0114 end
0115
0116 flm = s2let_transform_synthesis_lm2wav_mex(f_wav_vec, f_scal_vec, args.B, args.L, args.J_min, ...
0117 args.N, args.Spin, args.Reality, args.Upsample, ...
0118 args.OriginalSpin, ...
0119 args.Sampling);
0120
0121 end