diff aim-mat/modules/pcp/maf/TaperWindow.m @ 0:74dedb26614d

Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author tomwalters
date Fri, 20 May 2011 12:32:31 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aim-mat/modules/pcp/maf/TaperWindow.m	Fri May 20 12:32:31 2011 +0100
@@ -0,0 +1,76 @@
+%
+%	Taper Window Generator for signal onset/offset
+%	7 Apr. 1993
+%	29 Aug. 96
+%	IRINO Toshio
+%
+%	function [TaperWin, TypeTaper] = ...
+%		TaperWindow(LenWin,TypeTaper,LenTaper,RangeSigma,SwPlot)
+%	INPUT	LenWin    : Length of Window (Number of points)
+%		TypeTaper : Type of Taper (KeyWords of 3 letters)
+%		  (Hamming, Hanning (=cosine^2), Blackman, Gauss, Line)
+%		LenTaper  : Length of Taper  (Number of points)
+%		RangeSigma: Range in Sigma (default: 3) for Gauss
+%		SwPlot    : 0) Omit plotting,  1) Plot Taper
+%	OUTPUT  TaperWin  : Taper Window Points (max==1);
+%		TypeTaper : Type of Taper (Full Name)
+%
+function [TaperWin, TypeTaper] = ...
+	TaperWindow(LenWin,TypeTaper,LenTaper,RangeSigma,SwPlot)
+
+if nargin < 2,
+help TaperWindow
+error([ 'Specify Type of Taper : ' ...
+	' Hamming, Hanning (=cosine^2), Blackman, Gauss, Line ']);
+%TaperWin = ones(1,LenWin);
+%return;
+end;
+
+if nargin < 3, LenTaper = fix(LenWin/2); end;
+if nargin < 4, RangeSigma = 3; end;
+
+if  LenTaper*2 >= LenWin, 
+	disp('Caution (TaperWindow.m) : No flat part. ');
+	if LenTaper ~= fix(LenWin/2),
+	disp('Caution (TaperWindow.m) : LenTaper <-- fix(LenWin/2)');
+	end;
+	LenTaper = fix(LenWin/2); 
+end;
+
+if nargin < 5, SwPlot = 0; end;	% changing default Swplot 29 Aug. 96
+
+%TypeTaper = lower(TypeTaper(1:3));
+
+if	upper(TypeTaper(1:3)) == 'HAM', 
+	Taper = hamming(LenTaper*2)';
+	TypeTaper = 'Hamming';
+elseif	upper(TypeTaper(1:3)) == 'HAN' | upper(TypeTaper(1:3)) == 'COS', 
+	Taper = hanning(LenTaper*2)';
+	TypeTaper = 'Hanning/Cosine';
+elseif	upper(TypeTaper(1:3)) == 'BLA', 
+	Taper = blackman(LenTaper*2)';
+	TypeTaper = 'Blackman';
+elseif	upper(TypeTaper(1:3)) == 'GAU',  
+	if length(RangeSigma) == 0, RangeSigma = 3; end;
+	nn = -LenTaper+0.5:1:LenTaper-0.5;
+	Taper = exp(-(RangeSigma*nn/LenTaper).^2 /2);
+	TypeTaper = 'Gauss';
+else	Taper = [1:LenTaper LenTaper:-1:1]/LenTaper;  % 'line', 
+	TypeTaper = 'Line';
+end;
+
+%plot(Taper)
+%size(Taper);
+LenTaper = fix(LenTaper);
+TaperWin = [	Taper(1:LenTaper) ones(1,LenWin-LenTaper*2) ...
+		Taper(LenTaper+1:LenTaper*2)];
+
+if SwPlot == 1,
+
+plot(TaperWin)
+xlabel('Points');
+ylabel('Amplitude');
+title(['TypeTaper = ' TypeTaper] );
+
+end;
+