diff util/Rice Wavelet Toolbox/makesig.m @ 78:f69ae88b8be5

added Rice Wavelet Toolbox with my modification, so it can be compiled on newer systems.
author Ivan Damnjanovic lnx <ivan.damnjanovic@eecs.qmul.ac.uk>
date Fri, 25 Mar 2011 15:27:33 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util/Rice Wavelet Toolbox/makesig.m	Fri Mar 25 15:27:33 2011 +0000
@@ -0,0 +1,211 @@
+function [x,N] = makesig(SigName,N)
+% [x,N] = makesig(SigName,N) Creates artificial test signal identical to the
+%     standard test signals proposed and used by D. Donoho and I. Johnstone
+%     in WaveLab (- a matlab toolbox developed by Donoho et al. the statistics
+%     department at Stanford University).
+%
+%    Input:  SigName - Name of the desired signal (Default 'all')
+%                        'AllSig' (Returns a matrix with all the signals)
+%                        'HeaviSine'
+%                        'Bumps'
+%                        'Blocks'
+%                        'Doppler'
+%                        'Ramp'
+%                        'Cusp'
+%                        'Sing'
+%                        'HiSine'
+%                        'LoSine'
+%                        'LinChirp'
+%                        'TwoChirp'
+%                        'QuadChirp'
+%                        'MishMash'
+%                        'Werner Sorrows' (Heisenberg)
+%                        'Leopold' (Kronecker)
+%            N       - Length in samples of the desired signal (Default 512)
+%
+%    Output: x   - vector/matrix of test signals
+%            N   - length of signal returned
+%
+%    See also: 
+%
+%    References:
+%            WaveLab can be accessed at
+%            www_url: http://playfair.stanford.edu/~wavelab/
+%            Also see various articles by D.L. Donoho et al. at
+%            web_url: http://playfair.stanford.edu/
+
+%File Name: makesig.m
+%Last Modification Date: 08/30/95	15:52:03
+%Current Version: makesig.m	2.4
+%File Creation Date: Thu Jun  8 10:31:11 1995
+%Author: Jan Erik Odegard  <odegard@ece.rice.edu>
+%
+%Copyright (c) 2000 RICE UNIVERSITY. All rights reserved.
+%Created by Jan Erik Odegard, Department of ECE, Rice University. 
+%
+%This software is distributed and licensed to you on a non-exclusive 
+%basis, free-of-charge. Redistribution and use in source and binary forms, 
+%with or without modification, are permitted provided that the following 
+%conditions are met:
+%
+%1. Redistribution of source code must retain the above copyright notice, 
+%   this list of conditions and the following disclaimer.
+%2. Redistribution in binary form must reproduce the above copyright notice, 
+%   this list of conditions and the following disclaimer in the 
+%   documentation and/or other materials provided with the distribution.
+%3. All advertising materials mentioning features or use of this software 
+%   must display the following acknowledgment: This product includes 
+%   software developed by Rice University, Houston, Texas and its contributors.
+%4. Neither the name of the University nor the names of its contributors 
+%   may be used to endorse or promote products derived from this software 
+%   without specific prior written permission.
+%
+%THIS SOFTWARE IS PROVIDED BY WILLIAM MARSH RICE UNIVERSITY, HOUSTON, TEXAS, 
+%AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
+%BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
+%FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RICE UNIVERSITY 
+%OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
+%EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+%PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+%OR BUSINESS INTERRUPTIONS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+%WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+%OTHERWISE), PRODUCT LIABILITY, OR OTHERWISE ARISING IN ANY WAY OUT OF THE 
+%USE OF THIS SOFTWARE,  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+%
+%For information on commercial licenses, contact Rice University's Office of 
+%Technology Transfer at techtran@rice.edu or (713) 348-6173
+%
+%Change History: This m-file is a copy of the  code provided with WaveLab
+%                customized to be consistent with RWT.
+%                Jan Erik Odegard <odegard@ece.rice.edu> Thu Jun  8 1995
+%
+
+if(nargin < 1)
+  SigName = 'AllSig';
+  N = 512;
+elseif(nargin == 1)
+  N = 512;
+end;
+t = (1:N) ./N;
+x = [];
+y = [];
+if(strcmp(SigName,'HeaviSine') | strcmp(SigName,'AllSig')),
+  y = 4.*sin(4*pi.*t);
+  y = y - sign(t - .3) - sign(.72 - t);
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Bumps') | strcmp(SigName,'AllSig')),
+  pos = [ .1 .13 .15 .23 .25 .40 .44 .65  .76 .78 .81];
+  hgt = [ 4  5   3   4  5  4.2 2.1 4.3  3.1 5.1 4.2];
+  wth = [.005 .005 .006 .01 .01 .03 .01 .01  .005 .008 .005];
+  y = zeros(size(t));
+  for j =1:length(pos)
+    y = y + hgt(j)./( 1 + abs((t - pos(j))./wth(j))).^4;
+  end 
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Blocks') | strcmp(SigName,'AllSig')),
+  pos = [ .1 .13 .15 .23 .25 .40 .44 .65  .76 .78 .81];
+  hgt = [4 (-5) 3 (-4) 5 (-4.2) 2.1 4.3  (-3.1) 2.1 (-4.2)];
+  y = zeros(size(t));
+  for j=1:length(pos)
+    y = y + (1 + sign(t-pos(j))).*(hgt(j)/2) ;
+  end
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Doppler') | strcmp(SigName,'AllSig')),
+  y = sqrt(t.*(1-t)).*sin((2*pi*1.05) ./(t+.05));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Ramp') | strcmp(SigName,'AllSig')),
+  y = t - (t >= .37);
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Cusp') | strcmp(SigName,'AllSig')),
+  y = sqrt(abs(t - .37));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Sing') | strcmp(SigName,'AllSig')),
+  k = floor(N * .37);
+  y = 1 ./abs(t - (k+.5)/N);
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'HiSine') | strcmp(SigName,'AllSig')),
+  y = sin( pi * (N * .6902) .* t);
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'LoSine') | strcmp(SigName,'AllSig')),
+  y = sin( pi * (N * .3333) .* t);
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'LinChirp') | strcmp(SigName,'AllSig')),
+  y = sin(pi .* t .* ((N .* .125) .* t));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'TwoChirp') | strcmp(SigName,'AllSig')),
+  y = sin(pi .* t .* (N .* t)) + sin((pi/3) .* t .* (N .* t));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'QuadChirp') | strcmp(SigName,'AllSig')),
+  y = sin( (pi/3) .* t .* (N .* t.^2));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'MishMash') | strcmp(SigName,'AllSig')),  
+  % QuadChirp + LinChirp + HiSine
+  y = sin( (pi/3) .* t .* (N .* t.^2)) ;
+  y = y +  sin( pi * (N * .6902) .* t);
+  y = y +  sin(pi .* t .* (N .* .125 .* t));
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'WernerSorrows') | strcmp(SigName,'AllSig')),
+  y = sin( pi .* t .* (N/2 .* t.^2)) ;
+  y = y +  sin( pi * (N * .6902) .* t);
+  y = y +  sin(pi .* t .* (N .* t));
+  pos = [ .1 .13 .15 .23 .25 .40 .44 .65  .76 .78 .81];
+  hgt = [ 4  5   3   4  5  4.2 2.1 4.3  3.1 5.1 4.2];
+  wth = [.005 .005 .006 .01 .01 .03 .01 .01  .005 .008 .005];
+  for j =1:length(pos)
+    y = y + hgt(j)./( 1 + abs((t - pos(j))./wth(j))).^4;
+  end 
+end;
+x = [x;y];
+y = [];
+if(strcmp(SigName,'Leopold') | strcmp(SigName,'AllSig')),
+  y = (t == floor(.37 * N)/N); 		% Kronecker
+end;
+x = [x;y];
+y = [];
+
+%  disp(sprintf('MakeSignal: I don*t recognize << %s>>',SigName))
+%  disp('Allowable SigNames are:')
+%  disp('AllSig'),
+%  disp('HeaviSine'),
+%  disp('Bumps'),
+%  disp('Blocks'),
+%  disp('Doppler'),
+%  disp('Ramp'),
+%  disp('Cusp'),
+%  disp('Crease'),
+%  disp('Sing'),
+%  disp('HiSine'),
+%  disp('LoSine'),
+%  disp('LinChirp'),
+%  disp('TwoChirp'),
+%  disp('QuadChirp'),
+%  disp('MishMash'),
+%  disp('WernerSorrows'),
+%  disp('Leopold'),
+%end