annotate dsp/wigner.m @ 61:eff6bddf82e3
tip
Finally implemented perceptual brightness thing.
author |
samer |
date |
Sun, 11 Oct 2015 10:20:42 +0100 |
parents |
c3b0cd708782 |
children |
|
rev |
line source |
samer@32
|
1 function wig = wigner(sig,m,l,k,win)
|
samer@32
|
2 % Wigner -- Wigner-Ville Distribution. This version
|
samer@32
|
3 % operates on an entire signal in a vector.
|
samer@32
|
4 % Usage
|
samer@32
|
5 % wig = wigner(sig,m,l,k,win)
|
samer@32
|
6 % Inputs
|
samer@32
|
7 % sig 1-d signal
|
samer@32
|
8 % m half window length (must be power of 2)
|
samer@32
|
9 % l number of frequencies (ie rows in output)
|
samer@32
|
10 % k window step (defaults to 1)
|
samer@32
|
11 % win half window of size m+1
|
samer@32
|
12 % Outputs
|
samer@32
|
13 % wig complex-valued matrix representing the Wigner-Ville
|
samer@32
|
14 % distribution of zero-extended signal with rows corresponding
|
samer@32
|
15 % to frequencies and columns corresponding to times.
|
samer@32
|
16 %
|
samer@32
|
17 % Side Effects
|
samer@32
|
18 % Image Plot of the Wigner-Ville distribution
|
samer@32
|
19 %
|
samer@32
|
20
|
samer@32
|
21 sig = sig(:);
|
samer@32
|
22 n = length(sig);
|
samer@32
|
23
|
samer@32
|
24 if nargin<4 k = 1; end
|
samer@32
|
25 if nargin<3 l = m+1; end
|
samer@32
|
26 if nargin<5 win = ones(m+1,1); end
|
samer@32
|
27
|
samer@32
|
28 f = [zeros(m,1); sig; zeros(m,1)];
|
samer@32
|
29 wig = zeros(l,floor(n/k));
|
samer@32
|
30 ix = 0:m;
|
samer@32
|
31
|
samer@32
|
32 col=1;
|
samer@32
|
33 for t=1:k:n,
|
samer@32
|
34 tplus = m + t + ix;
|
samer@32
|
35 tminus = m + t - ix;
|
samer@32
|
36 R = win .* ( f(tplus) .* f(tminus) );
|
samer@32
|
37 x = [ R(1:m); R(m+1:-1:2) ];
|
samer@32
|
38 y = fft(x);
|
samer@32
|
39 wig(:,col) = real(y(1:l));
|
samer@32
|
40 col = col+1;
|
samer@32
|
41 end
|
samer@32
|
42
|