genSignal

PURPOSE ^

Inputs

SYNOPSIS ^

function [x varargout] = genSignal(N,in)

DESCRIPTION ^

  Inputs
   N -- length of the signal
   in (input structure)
       type    -- signal type (details below)
       randgen -- randomize the signal (1) or reproduce the signal from
                   Wavelab (0)
       wType   -- type of wavelet transform

   sType: 

   T-sparse signals: randn, sign, ones, highD

   The following functions adopted from Wavelab toolbox
   Name string: 'HeaviSine', 'Blocks', 'Bumps'
            'Doppler', 'Ramp', 'Cusp', 'Sing',            
            'pcwPoly' (Piece-Wise 3rd degree polynomial)
            'pcwreg' (Piece-Regular, Piece-Wise Smooth),
            'LinChirp', 'TwoChirp', 'QuadChirp',
            'MishMash', 
            'Cusp2', 'HypChirps','LinChirps', 'Chirps',

   Sounds: 
       MATLAB options: 'chirp','gong','handel'
       Wavelab options: 'Greasy','Tweet'

   Images: 

   References
    Various articles of D.L. Donoho and I.M. Johnstone

 Originally made by David L. Donoho.
 Function has been enhanced.

  Part of Wavelab Version 850
  Built Tue Jan  3 13:20:39 EST 2006
  This is Copyrighted Material
  For Copying permissions see COPYING.m

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [x varargout] = genSignal(N,in)
0002 
0003 %  Inputs
0004 %   N -- length of the signal
0005 %   in (input structure)
0006 %       type    -- signal type (details below)
0007 %       randgen -- randomize the signal (1) or reproduce the signal from
0008 %                   Wavelab (0)
0009 %       wType   -- type of wavelet transform
0010 %
0011 %   sType:
0012 %
0013 %   T-sparse signals: randn, sign, ones, highD
0014 %
0015 %   The following functions adopted from Wavelab toolbox
0016 %   Name string: 'HeaviSine', 'Blocks', 'Bumps'
0017 %            'Doppler', 'Ramp', 'Cusp', 'Sing',
0018 %            'pcwPoly' (Piece-Wise 3rd degree polynomial)
0019 %            'pcwreg' (Piece-Regular, Piece-Wise Smooth),
0020 %            'LinChirp', 'TwoChirp', 'QuadChirp',
0021 %            'MishMash',
0022 %            'Cusp2', 'HypChirps','LinChirps', 'Chirps',
0023 %
0024 %   Sounds:
0025 %       MATLAB options: 'chirp','gong','handel'
0026 %       Wavelab options: 'Greasy','Tweet'
0027 %
0028 %   Images:
0029 %
0030 %   References
0031 %    Various articles of D.L. Donoho and I.M. Johnstone
0032 %
0033 % Originally made by David L. Donoho.
0034 % Function has been enhanced.
0035 %
0036 %  Part of Wavelab Version 850
0037 %  Built Tue Jan  3 13:20:39 EST 2006
0038 %  This is Copyrighted Material
0039 %  For Copying permissions see COPYING.m
0040 
0041 t = (1:N)./N;
0042 if isfield(in,'randgen'); randgen = in.randgen; else randgen = 0; end
0043 if isfield(in,'take_fwt'); take_fwt = in.take_fwt; else take_fwt = 0; end
0044 
0045 wave_struct = [];
0046 sig = [];
0047 
0048 sType = in.type;
0049 
0050 switch lower(sType)
0051     case 'randn'
0052         T = in.T;
0053         q = randperm(N);
0054         x = zeros(N,1);
0055         x(q(1:T)) = randn(T,1);
0056         sig = x; 
0057         
0058     case 'sign'
0059         T = in.T;
0060         q = randperm(N);
0061         x = zeros(N,1);
0062         x(q(1:T)) = sign(randn(T,1));
0063         sig = x; 
0064         
0065     case 'ones'
0066         T = in.T;
0067         q = randperm(N);
0068         x = zeros(N,1);
0069         x(q(1:T)) = ones(T,1);
0070         sig = x; 
0071         
0072     case 'highd'
0073         T = in.T;
0074         q = randperm(N);
0075         x = zeros(N,1);
0076         x(q(1:ceil(T/2))) = sign(randn(ceil(T/2),1));
0077         x(q(ceil(T/2)+1:T)) = sign(randn(T-ceil(T/2),1))./1e2;
0078         sig = x; 
0079         
0080     %-----------------%
0081     % Wavelab signals %
0082     %-----------------%
0083     case 'blocks'
0084         if randgen == 0
0085             pos = [ .1 .13 .15 .23 .25 .40 .44 .65  .76 .78 .81];
0086             hgt = [4 (-5) 3 (-4) 5 (-4.2) 2.1 4.3  (-3.1) 2.1 (-4.2)];
0087         else
0088             pos = sort(rand(1,11));
0089             % hgt = sign(randn(1,10)).*randint(1,10,[1 5]);
0090             hgt = sign(randn(1,11)).*randi([1 5],1,11);
0091         end
0092         sig = zeros(size(t));
0093         for j=1:length(pos)
0094             sig = sig + (1 + sign(t-pos(j))).*(hgt(j)/2) ;
0095         end
0096         sig = sig(:); 
0097     case 'bumps'
0098         if randgen == 0
0099             pos = [ .1 .13 .15 .23 .25 .40 .44 .65  .76 .78 .81];
0100             hgt = [ 4  5   3   4  5  4.2 2.1 4.3  3.1 5.1 4.2];
0101             wth = [.005 .005 .006 .01 .01 .03 .01 .01  .005 .008 .005];
0102         else
0103             pos = sort(rand(1,11));
0104             hgt = 4+sign(randn(1,11)).*rand(1,11);
0105             wth = rand(1,11)/100;
0106         end
0107         sig = zeros(size(t));
0108         for j =1:length(pos)
0109             sig = sig + hgt(j)./( 1 + abs((t - pos(j))./wth(j))).^4;
0110         end
0111         sig = sig(:); 
0112         
0113     case 'pcwpoly' % Piecewise polynomial
0114         n = N;
0115         if randgen == 0
0116             t = (1:fix(n/5)) ./fix(n/5);
0117             sig1=20*(t.^3+t.^2+4);
0118             sig3=40*(2.*t.^3+t) + 100;
0119             sig2=10.*t.^3 + 45;
0120             sig4=16*t.^2+8.*t+16;
0121             sig5=20*(t+4);
0122             sig6(1:fix(n/10))=ones(1,fix(n/10));
0123             sig6=sig6*20;
0124             sig(1:fix(n/5))=sig1;
0125             sig(2*fix(n/5):-1:(fix(n/5)+1))=sig2;
0126             sig((2*fix(n/5)+1):3*fix(n/5))=sig3;
0127             sig((3*fix(n/5)+1):4*fix(n/5))=sig4;
0128             sig((4*fix(n/5)+1):5*fix(n/5))=sig5(fix(n/5):-1:1);
0129             dif=n-5*fix(n/5);
0130             sig(5*fix(n/5)+1:n)=sig(dif:-1:1);
0131             %sig((fix(n/20)+1):(fix(n/20)+fix(n/10)))=-ones(1,fix(n/10))*20;
0132             sig((fix(n/20)+1):(fix(n/20)+fix(n/10)))=ones(1,fix(n/10))*10;
0133             sig((n-fix(n/10)+1):(n+fix(n/20)-fix(n/10)))=ones(1,fix(n/20))*150;
0134             % zero-mean
0135             bias=sum(sig)/n;
0136             sig=sig-bias;
0137         else
0138             t = (1:fix(n/5)) ./fix(n/5);
0139             sig1=20*(t.^3+t.^2+4)*(1+(randn*.1));
0140             sig3=40*(2.*t.^3+t)*(1+(randn*.1)) + 100*(1+(randn*.05));
0141             sig2=10.*t.^3*(1+(randn*.05)) + 45*(1+(randn*.1));
0142             sig4=16*t.^2+8.*t*(1+randn*.1)+16*(1+(randn*.05));
0143             sig5=20*(t+4)*(1+(randn*.1));
0144             sig6(1:fix(n/10))=ones(1,fix(n/10))*(1+(randn*.1));
0145             sig6=sig6*20*(1+(randn*.05));
0146             sig(1:fix(n/5))=sig1;
0147             sig(2*fix(n/5):-1:(fix(n/5)+1))=sig2;
0148             sig((2*fix(n/5)+1):3*fix(n/5))=sig3;
0149             sig((3*fix(n/5)+1):4*fix(n/5))=sig4;
0150             sig((4*fix(n/5)+1):5*fix(n/5))=sig5(fix(n/5):-1:1);
0151             dif=n-5*fix(n/5);
0152             sig(5*fix(n/5)+1:n)=sig(dif:-1:1);
0153             %sig((fix(n/20)+1):(fix(n/20)+fix(n/10)))=-ones(1,fix(n/10))*20;
0154             sig((fix(n/20)+1):(fix(n/20)+fix(n/10)))=ones(1,fix(n/10))*10;
0155             sig((n-fix(n/10)+1):(n+fix(n/20)-fix(n/10)))=ones(1,fix(n/20))*150;
0156             % zero-mean
0157             bias=sum(sig)/n;
0158             sig=sig-bias;
0159         end
0160         sig = sig(:);
0161          
0162     case 'heavisine'
0163         if randgen == 0
0164             sig = 4.*sin(4*pi.*t);
0165             sig = sig - sign(t - .3) - sign(.72 - t);
0166         else
0167             sig = (1+rand*.5)*4.*sin(4*pi.*t*(1+rand*.25));
0168             sig = sig - sign(t - .3*(1+randn*.1)) - sign(.72*(1+randn*.1) - t)*(1+randn);
0169         end
0170         sig = sig(:);
0171          
0172     case 'doppler'
0173         if randgen == 0
0174             sig = sqrt(t.*(1-t)).*sin((2*pi*1.05) ./(t+.05));
0175         else
0176             sig = (1+randn*.02)*sqrt(t.*(1-t)).*sin((2*pi*1.05*(1+randn*.02)) ./(t+.05*(1+randn*.02)));
0177         end
0178         sig = sig(:);
0179          
0180     case 'cusp'
0181         if randgen == 0
0182             sig = sqrt(abs(t - .37));
0183         else
0184             sig = sqrt(abs(t - (1+0.1*rand)*.37));
0185         end
0186         
0187         sig = sig(:); 
0188         
0189     case 'ramp'
0190         if randgen == 0
0191             sig = t - (t >= .37);
0192         else
0193             sig = (1+randn*.05)*t - (t >= .37*(1+randn*.02));
0194         end
0195         sig = sig(:);
0196               
0197     case 'pcwreg' % Piecewise regular
0198         sig = MakeSignal('Piece-Regular',N);
0199         
0200         sig = sig(:);    
0201         
0202     case 'cusp2'
0203         n = N/8;
0204         i1 = (1:n)./n;
0205         x = (1-sqrt(i1)) + i1/2 -.5;
0206         sig = zeros(1,N);
0207         sig(N-1.5*n+1:N-.5*n) = x;
0208         sig(N-2.5*n+2:N-1.5*n+1) = fliplr(x);
0209         sig(3*n+1:3*n + n) = .5*ones(1,n);
0210         sig = sig(:); 
0211         
0212     case 'sing'
0213         sig = MakeSignal('Sing',N); 
0214 
0215         sig = sig(:);        
0216         
0217         
0218     %--------------%
0219     % Kalman model %
0220     %--------------%
0221     case lower('kalman-heavisine')        
0222         Np = in.Np;
0223         t = (1:Np)./Np;
0224         N = Np*ceil(N/Np);
0225         sig = zeros(N,1);
0226  
0227         randgen = 0;
0228         for p = 1:ceil(N/Np);
0229             sigt = zeros(Np,1);
0230             if randgen == 0
0231                 sigt = 4.*sin(4*pi.*t);
0232                 sigt = sigt - sign(t - .3) - sign(.72 - t);
0233             else
0234                 sigt = (1+rand*.01)*4.*sin(4*pi.*t*(1+rand*.025));
0235                 sigt = sigt - sign(t - .3*(1+randn*.01)) - sign(.72*(1+randn*.01) - t)*(1+randn*.02);
0236             end
0237             randgen = 1;
0238             sig((p-1)*Np+1:p*Np) = sigt;
0239         end
0240         sig = sig(:);
0241     case 'kalman-pcwpoly' % Piecewise polynomial
0242         Np = in.Np;
0243         n = Np;
0244         N = Np*ceil(N/Np);
0245         sig = zeros(N,1);
0246  
0247         randgen = 0;
0248         for p = 1:ceil(N/Np);
0249             sigt = zeros(Np,1);
0250             
0251             if randgen == 0                
0252                 t = (1:fix(n/5)) ./fix(n/5);
0253                 sig1=20*(t.^3+t.^2+4);
0254                 sig3=40*(2.*t.^3+t) + 100;
0255                 sig2=10.*t.^3 + 45;
0256                 sig4=16*t.^2+8.*t+16;
0257                 sig5=20*(t+4);
0258                 sig6(1:fix(n/10))=ones(1,fix(n/10));
0259                 sig6=sig6*20;
0260                 sigt(1:fix(n/5))=sig1;
0261                 sigt(2*fix(n/5):-1:(fix(n/5)+1))=sig2;
0262                 sigt((2*fix(n/5)+1):3*fix(n/5))=sig3;
0263                 sigt((3*fix(n/5)+1):4*fix(n/5))=sig4;
0264                 sigt((4*fix(n/5)+1):5*fix(n/5))=sig5(fix(n/5):-1:1);
0265                 dif=n-5*fix(n/5);
0266                 sigt(5*fix(n/5)+1:n)=sigt(dif:-1:1);
0267                 %sigt((fix(n/20)+1):(fix(n/20)+fix(n/10)))=-ones(1,fix(n/10))*20;
0268                 sigt((fix(n/20)+1):(fix(n/20)+fix(n/10)))=ones(1,fix(n/10))*10;
0269                 sigt((n-fix(n/10)+1):(n+fix(n/20)-fix(n/10)))=ones(1,fix(n/20))*150;
0270                 % zero-mean
0271                 bias=sum(sigt)/n;
0272                 sigt=sigt-bias;
0273             else                
0274                 t = (1:fix(n/5)) ./fix(n/5);
0275                 sig1=20*(t.^3+t.^2+4)*(1+(randn*.1));
0276                 sig3=40*(2.*t.^3+t)*(1+(randn*.1)) + 100*(1+(randn*.05));
0277                 sig2=10.*t.^3*(1+(randn*.05)) + 45*(1+(randn*.1));
0278                 sig4=16*t.^2+8.*t*(1+randn*.1)+16*(1+(randn*.05));
0279                 sig5=20*(t+4)*(1+(randn*.1));
0280                 sig6(1:fix(n/10))=ones(1,fix(n/10))*(1+(randn*.1));
0281                 sig6=sig6*20*(1+(randn*.05));
0282                 sigt(1:fix(n/5))=sig1;
0283                 sigt(2*fix(n/5):-1:(fix(n/5)+1))=sig2;
0284                 sigt((2*fix(n/5)+1):3*fix(n/5))=sig3;
0285                 sigt((3*fix(n/5)+1):4*fix(n/5))=sig4;
0286                 sigt((4*fix(n/5)+1):5*fix(n/5))=sig5(fix(n/5):-1:1);
0287                 dif=n-5*fix(n/5);
0288                 sigt(5*fix(n/5)+1:n)=sigt(dif:-1:1);
0289                 %sigt((fix(n/20)+1):(fix(n/20)+fix(n/10)))=-ones(1,fix(n/10))*20;
0290                 sigt((fix(n/20)+1):(fix(n/20)+fix(n/10)))=ones(1,fix(n/10))*10;
0291                 sigt((n-fix(n/10)+1):(n+fix(n/20)-fix(n/10)))=ones(1,fix(n/20))*150;
0292                 % zero-mean
0293                 bias=sum(sigt)/n;
0294                 sigt=sigt-bias;
0295             end
0296             randgen = 0;
0297             sig((p-1)*Np+1:p*Np) = sigt;
0298         end
0299         sig = sig(:);
0300         
0301     %--------%
0302     % images %
0303     %--------%
0304     case lower('image-barbara');
0305         I = double(imread('barbara.ras'));
0306         [ROW COL] = size(I);
0307         I = imresize(I, [ROW N]);        
0308         % I = I-repmat(mean(I,2),1,N);
0309         vec = @(z) z(:);
0310         % sig = double(vec(I(zigzag_order(ROW,COL))));
0311         sig = vec(I'); 
0312     case lower('image-baboon');
0313         I = double(imread('baboon.ras'));
0314         [ROW COL] = size(I);
0315         I = imresize(I, [ROW N]);        
0316         % I = I-repmat(mean(I,2),1,N);
0317         vec = @(z) z(:);
0318         % sig = double(vec(I(zigzag_order(ROW,COL))));
0319         sig = vec(I');     
0320     case lower('image-cameraman');
0321         I = double(imread('cameraman.tif'));
0322         [ROW COL] = size(I);
0323         I = imresize(I, [ROW N]);        
0324         % I = I-repmat(mean(I,2),1,N);
0325         vec = @(z) z(:);
0326         % sig = double(vec(I(zigzag_order(ROW,COL))));
0327         sig = vec(I');
0328     case lower('image-house');
0329         I = double(rgb2gray(imread('house.tif')));
0330         [ROW COL] = size(I);
0331         I = imresize(I, [ROW N/2]);        
0332         % I = I-repmat(mean(I,2),1,N);
0333         vec = @(z) z(:);
0334         % sig = double(vec(I(zigzag_order(ROW,COL))));
0335         I = [I(1:2:end,:) fliplr(I(2:2:end,:))];
0336         figure(123);
0337         subplot(121); imagesc(I');
0338         subplot(122); imagesc(diff(I',[],2));
0339 
0340         sig = vec(I');
0341     case lower('image-boats');
0342         load('boats');
0343         I = double(sig);
0344         [ROW COL] = size(I);
0345         I = imresize(I, [ROW N/2]);        
0346         % I = I-repmat(mean(I,2),1,N);
0347         vec = @(z) z(:);
0348         % sig = double(vec(I(zigzag_order(ROW,COL))));
0349         % I = [I(1:2:end,:) fliplr(I(2:2:end,:))];
0350         figure(123); 
0351         subplot(121); imagesc(I');
0352         subplot(122); imagesc(diff(I',[],2));
0353         
0354         sig = vec(I');
0355     case lower('image-saturn')
0356         I = double(rgb2gray(imread('saturn4.jpg')));
0357         [ROW COL] = size(I);
0358         I = imresize(I, [ROW N/2]);        
0359         % I = I-repmat(mean(I,2),1,N);
0360         vec = @(z) z(:);
0361         % sig = double(vec(I(zigzag_order(ROW,COL))));
0362         I = [I(1:2:end,:) fliplr(I(2:2:end,:))];
0363 
0364         figure(123); 
0365         subplot(121); imagesc(I');
0366         subplot(122); imagesc(diff(I',[],2));
0367 
0368         sig = vec(I');     
0369     case lower('image-chirp')
0370         I = double(rgb2gray(imread('pattern.jpg')));                 
0371         [ROW COL] = size(I);
0372         I = imresize(I, [ROW N]);        
0373         % I = I-repmat(mean(I,2),1,N);
0374         vec = @(z) z(:);
0375         % sig = double(vec(I(zigzag_order(ROW,COL))));
0376         sig = vec(I');
0377         % I = double(rgb2gray(imread('ohare1.jpg'))); I = I-mean(I(:)); [M N]=size(I);
0378         % for ii=1:2:M-1; figure(1); imagesc(I); figure(2); plot(I(ii:ii+1,:)'); figure(3); plot(fftshift(abs(fft(I(ii:ii+1,:)')))); title(ii); drawnow; pause(1/10); end
0379         
0380     %--------%
0381     % Chirps %
0382     %--------%
0383     case lower('LinChirp')
0384         sig = MakeSignal('LinChirp',N);
0385         sig = sig(:);        
0386     
0387     case  lower('TwoChirp')
0388         sig = MakeSignal('TwoChirp',N);
0389         sig = sig(:);
0390         
0391     case lower('QuadChirp')
0392         sig = MakeSignal('QuadChirp',N);
0393         sig = sig(:);
0394         
0395     case lower('MishMash')
0396         sig = MakeSignal('MishMash',N);
0397         sig = sig(:);
0398         
0399     case lower('LinChirps')
0400         sig = MakeSignal('LinChirps',N);
0401         sig = sig(:); 
0402         
0403     case lower('Chirps')
0404         sig = MakeSignal('Chirps',N);
0405         sig = sig(:);       
0406      
0407     case lower('HypChirps')
0408         % strcmp(Name,'HypChirps'), % Hyperbolic Chirps of Mallat's book
0409         N = round(N*1.75);
0410         sig = MakeSignal('HypChirps',N);
0411         sig = sig(N/10+1:round(.65*N)+N/10);      
0412         sig = sig(1:2^(floor(log2(length(sig)))));
0413         sig = sig(:);
0414 
0415     case lower('chirp-MATLAB')% % Chirp model 2
0416         % Fs = 200;
0417         % t = -1:1/Fs:1-1/Fs;
0418         % fo = Fs/3; f1 = 2*Fs/3;
0419         % X = chirp(t,fo,1,f1,'q',[],'convex')';
0420         % % X = chirp(t,fo,1,f1,'li')';
0421         % figure(501); spectrogram(X,hanning(256),128,256,Fs,'yaxis'); shg
0422         % len_stream = length(t);
0423         % K = 0;
0424 
0425         
0426     %--------%
0427     % Sounds %
0428     %--------%
0429     case {'chirp','gong','handel'}
0430         eval(sprintf('load %s.mat',sType));
0431         sig = y; % interp1(1:length(y),y,1:1/2:length(y))';
0432         x = sig(:);
0433     case {'greasy','tweet'}
0434         eval('sig = ReadSignal(sType);');
0435         x = sig; 
0436     %--------%
0437     % Images %
0438     %--------%
0439     case {'cameraman','barbara','lena','peppers','airplane','baboon','sailboat','tiffany','boats','shapes','pirate','house'}
0440         n = sqrt(N);
0441         switch sType
0442             case {'shapes','boats'}
0443                 load(sType);
0444             case {'pirate','cameraman'}
0445                 sig = double(imread(sType,'tif'));
0446             otherwise
0447                 sig = double(imread(sType,'ras'));
0448         end
0449         sig = imresize(sig,n/size(sig,1));
0450         [h0 h1 g0 g1] = daub79; sym = 1; wType = 'daub79';
0451         % [h0 h1 g0 g1] = dauborth(4); sym = 0; wType = 'daub4';
0452         % [h0 h1 g0 g1] = dauborth(8); sym = 0; wType = 'daub8';
0453         
0454         fprintf('Image: %s, size: %dx%d, wavelet: %s \n',sType, n,n, wType);
0455         J = floor(log2(n)-4);
0456         x = fwt2(sig,h0,h1,J,sym);
0457         x = x(:);
0458         sig = x;
0459         N = length(x);
0460         
0461         wave_struct = {};
0462         wave_struct.wType = wType;
0463         wave_struct.J = J;
0464         wave_struct.FilterBank = [h0; h1; g0; g1];
0465         wave_struct.sym = sym;
0466         
0467         take_fwt = 0;
0468          
0469     case 'phantom'
0470         n = sqrt(N);
0471         sig = phantom('Modified Shepp-Logan',n);
0472         [h0 h1 g0 g1] = dauborth(2); sym = 0; wType = 'haar';
0473         
0474         fprintf('Image: %s, size: %dx%d, wavelet: %s \n',sType, n,n, wType);
0475         J = floor(log2(n)-3);
0476         x = fwt2(sig,h0,h1,J,sym);
0477         x = x(:);
0478         N = length(x);
0479         
0480         wave_struct = {};
0481         wave_struct.wType = wType;
0482         wave_struct.J = J;
0483         wave_struct.FilterBank = [h0; h1; g0; g1];
0484         wave_struct.sym = sym;
0485          
0486         take_fwt = 0;
0487     otherwise
0488         disp('NAO');
0489         
0490 end
0491 
0492 if take_fwt == 1
0493     if isfield(in,'wType')
0494         wType = in.wType;
0495     else
0496         wType = 'daub4';
0497     end
0498     if exist('wType','var')
0499         switch lower(wType)
0500             case 'haar'
0501                 [h0 h1 g0 g1] = dauborth(2); sym = 0; wType = 'haar';
0502             case 'daub4'
0503                 [h0 h1 g0 g1] = dauborth(4); sym = 0; wType = 'daub4';
0504             case 'daub8'
0505                 [h0 h1 g0 g1] = dauborth(8); sym = 0; wType = 'daub8';
0506             case 'daub79'
0507                 [h0 h1 g0 g1] = daub79; sym = 1; wType = 'daub79';
0508             case 'daub1018'
0509                 [h0 h1 g0 g1] = daub1018; sym = 2; wType = 'daub1018';
0510             otherwise
0511                 disp('NAO');
0512         end
0513     else
0514         [h0 h1 g0 g1] = dauborth(4); sym = 0; wType = 'daub4';
0515     end
0516     if isfield(in,'J');
0517         J = in.J;
0518     else 
0519         J = floor(log2(N));
0520     end
0521     x = fwt(sig,h0,h1,J,sym);
0522     W_h = @(x) fwt(x,h0,h1,J,sym);
0523     iW_h = @(x) ifwt(x,g0,g1,J,sym);
0524     
0525     wave_struct = {};
0526     wave_struct.W_h = W_h;
0527     wave_struct.iW_h = iW_h;
0528 else
0529     x = sig;
0530 end
0531 
0532 if isfield(in,'plot')
0533     if in.plot
0534         figure(1);
0535         subplot(211); set(gca,'FontSize',16);
0536         plot(sig,'LineWidth',2); set(gca,'XLim',[1 N]);
0537         axis tight; YLim = get(gca,'YLim');
0538         dY = YLim(2)-YLim(1);
0539         YLim = [YLim(1)-dY/10 YLim(2)+dY/10];
0540         set(gca,'YLim',YLim);
0541         set(gca,'XtickLabel','')
0542         ylabel(sType);
0543         subplot(212); set(gca,'FontSize',16);
0544         plot(x,'LineWidth',2); set(gca,'XLim',[1 N]);
0545         axis tight; YLim = get(gca,'YLim');
0546         dY = YLim(2)-YLim(1);
0547         YLim = [YLim(1)-dY/10 YLim(2)+dY/10];
0548         set(gca,'YLim',YLim);
0549         set(gca,'XtickLabel','')
0550         ylabel(wType);
0551     end
0552 end
0553 
0554 nout = max(nargout,1) - 1;
0555 if nout > 0
0556     varargout{1} = sig;
0557 end
0558 if nout > 1
0559     varargout{2} = wave_struct;
0560 end
0561

Generated on Mon 10-Jun-2013 23:03:23 by m2html © 2005