Mercurial > hg > ltpda
diff m-toolbox/classes/@specwinViewer/plotWindow.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/@specwinViewer/plotWindow.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,86 @@ +function plotWindow(varargin) + + if nargin == 2 + mainfig = varargin{end-1}; + plotType = varargin{end}; + ax = getappdata(mainfig.handle, 'axes'); + elseif nargin == 3 + ax = varargin{1}; + mainfig = varargin{2}; + plotType = varargin{3}; + end + + + info = findobj(mainfig.handle, 'Tag', 'InfoDisplay'); + + % get window type + winTxt = findobj(mainfig.handle, 'Tag', 'WindowSelect'); + wins = get(winTxt, 'String'); + win = wins{get(winTxt, 'Value')}; + + % Get window size + sizeTxt = findobj(mainfig.handle, 'Tag', 'WindowSize'); + winlen = str2num(get(sizeTxt, 'String')); + + if strcmpi(win, 'Kaiser') + % get psll + psllTxt = findobj(mainfig.handle, 'Tag', 'WindowPSLL'); + psll = str2num(get(psllTxt, 'String')); + w = specwin(win, winlen, psll); + cstr = sprintf('specwin(''%s'', %d, %f)', win, winlen, psll); + else + w = specwin(win, winlen); + cstr = sprintf('specwin(''%s'', %d)', win, winlen); + end + + consTxt = findobj(mainfig.handle, 'Tag', 'ConstructorDisplay'); + set(consTxt, 'String', cstr); + + + titleStr = ''; + legendStr = ''; + + switch plotType + case 'Time-domain' + hl = plot(ax, 1:length(w.win), w.win); + xlabel('sample'); + ylabel('amplitude'); + case 'Freq-domain' + % Freq response + f = linspace(-30,30,1000); + r = zeros(size(f)); + N = length(w.win); + + % do dft + for j=1:length(f) + k = [0:N-1].'; + r(j) = (w.win * exp(-2*pi*1i*f(j)*k/N) )./w.ws; + end + + % convert to dB + dbr = 20*log10(abs(r)); hl = plot(ax, f, dbr); + xlabel('bin'); + ylabel('amplitude [dB]'); + end + + col = [0.8 0.1 0.1]; + set(hl, 'Color', col); + titleStr = [titleStr, utils.plottools.label(w.type), ', ']; + titleStr = titleStr(1:end-2); + title(sprintf('Window: %s', titleStr)); + axis tight + grid on + + + % Info string + lstr = [sprintf('alpha = %g\n', w.alpha)... + sprintf('psll = %g\n', w.psll)... + sprintf('rov = %g\n', w.rov)... + sprintf('nenbw = %g\n', w.nenbw)... + sprintf('w3db = %g\n', w.w3db)... + sprintf('flatness = %g\n', w.flatness)]; + legendStr = [legendStr cellstr(lstr)]; + set(info, 'String', legendStr); + + +end