Mercurial > hg > ishara
annotate dsp/wignerdata.m @ 32:c3b0cd708782
Imported core dsp tools.
author | samer |
---|---|
date | Sun, 20 Jan 2013 13:48:47 +0000 |
parents | |
children |
rev | line source |
---|---|
samer@32 | 1 function Z=wignerdata(m,X) |
samer@32 | 2 % sliding window wigner distribution. feature: |
samer@32 | 3 % - low pass filter because of undersampling of |
samer@32 | 4 % autocorrelation function |
samer@32 | 5 % - windowing of autocorrelation to avoid spectral leakage |
samer@32 | 6 % - temporal smoothing followed by down sampling |
samer@32 | 7 |
samer@32 | 8 N = 2*m+1; % frame size |
samer@32 | 9 |
samer@32 | 10 [ filtB, filtA ] = butter( 5, 0.5); |
samer@32 | 11 |
samer@32 | 12 % make sure frames are N samples long |
samer@32 | 13 |
samer@32 | 14 % lowpass signal, get autocorrelation in wigner form, |
samer@32 | 15 % then short term average (exponential window) by 1st |
samer@32 | 16 % order IIR. |
samer@32 | 17 Im=m+1:2*m+1; |
samer@32 | 18 Ip=m+1:-1:1; |
samer@32 | 19 Z=map(@wiglocal,select(filtA,filtB,X)); |
samer@32 | 20 |
samer@32 | 21 function z=wiglocal(m,Im,Ip,X) |
samer@32 | 22 r=X(Ip,:).*X(Im,:); |
samer@32 | 23 %smoothing?? |
samer@32 | 24 smKernel = gauss_win(128,0.4)'; |
samer@32 | 25 wigR = spdiag(hgauss_win(m,0.5))*r; |
samer@32 | 26 % must filter and subsample wigR here |
samer@32 | 27 smRS = filter2(smKernel, wigR, 'valid'); |
samer@32 | 28 % subsample in time here? |
samer@32 | 29 |
samer@32 | 30 % take real fft using window |
samer@32 | 31 z = abs(fft([smR(1:m,:); smR(m+1:-1:2,:)])); |
samer@32 | 32 end |
samer@32 | 33 end |
samer@32 | 34 |
samer@32 | 35 |
samer@32 | 36 |
samer@32 | 37 |