0001 function w = get_window(varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010 PSLL = [];
0011
0012
0013 if nargin == 3
0014 w = varargin{1};
0015 name = varargin{2};
0016 N = varargin{3};
0017 elseif nargin == 4
0018 w = varargin{1};
0019 name = varargin{2};
0020 N = varargin{3};
0021 PSLL = varargin{4};
0022 else
0023 error('### Incorrect inputs.');
0024 end
0025
0026
0027 if isempty(PSLL)
0028
0029 z = [0:N-1]./N;
0030 win_name = sprintf('win_%s', name);
0031 try
0032 w = feval(win_name, w, z);
0033 catch
0034 error('\n### Your window [%s] is not a supported window.\n### Please type >>specwin(''Types'') to see all supported windows.', win_name(5:end));
0035 end
0036
0037 else
0038
0039
0040 w = get_kaiser_window(w, N, PSLL);
0041
0042 end
0043
0044
0045
0046
0047 function w = get_kaiser_window(w, N, psll)
0048
0049
0050 w.name = 'Kaiser';
0051 w.alpha = kaiser_alpha(psll);
0052 w.psll = psll;
0053 w.rov = kaiser_rov(w.alpha);
0054 w.nenbw = kaiser_nenbw(w.alpha);
0055 w.w3db = kaiser_w3db(w.alpha);
0056 w.flatness = kaiser_flatness(w.alpha);
0057
0058
0059
0060 v = kaiser(N+1, pi*w.alpha);
0061 v = v(1:end-1);
0062 w.ws = sum(v);
0063 w.ws2 = sum(v.*v);
0064 w.win = v.';
0065
0066
0067