⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makesig.m

📁 该程序包为用MATLAB编写的一个基于小波变换降噪的软件
💻 M
字号:
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) ;  endend;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); 		% Kroneckerend;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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -