1、Fourier Transform 缺陷----FT局域化特性分析
,就是使用(-∞,∞)的时间信息来计算单个频率的频谱(频域过程() Fω的任一频率组成部分的值),这是由在(-∞,∞)上的时域过程
决定的。故可知,傅里叶变换对彼此间的刻画是“全局性”的,不能反映各自局部区域上的特征,人们虽然从傅立叶变换能清楚地看到一个信息包含的每一个频率的多少,但很难看出不同信号的发射时间和发射的延续时间,缺少时间信息使得傅立叶分析变得脆弱而容易失误。
2、短时傅里叶变换(窗式傅里叶变换)
与信号
相乘,实现在u附近的开窗和平移,然后进行傅立叶变换。在线性空间有一个可测的、平方可积的函数
,对其进行窗式傅立叶变换:
3、小波引出
Short-Time Fourier Transform
1:function [stft, f, t] = stft(x, wlen, h, nfft, fs)
2:if size(x,2) > 1
3:x = x';
4:end
5:xlen = length(x);
6:win = hamming(wlen, 'periodic');
7:rown = ceil((1+nfft)/2);
8:coln = 1+fix((xlen-wlen)/h);
9:stft = zeros(rown, coln);
10:indx = 0;
11:col = 1;
12:% perform STFT
13:while indx + wlen <= xlen
14:xw = x(indx+1:indx+wlen).*win;
15:X = fft(xw, nfft);
16:stft(:,col) = X(1:(rown));
17:indx = indx + h;
18:col = col + 1;
19:end
20:t = (wlen/2:h:xlen-wlen/2-1)/fs;
21:f = (0:rown-1)*fs/nfft;
22:end
Inverse Short-Time Fourier Transform
1:function [x, t] = istft(stft, h, nfft, fs)
2:coln = size(stft, 2);
3:xlen = nfft + (coln-1)*h;
4:x = zeros(1, xlen);
5:win = hamming(nfft, 'periodic');
6:if rem(nfft, 2)
7:for b = 0:h:(h*(coln-1))
8:X = stft(:, 1 + b/h);
9:X = [X; conj(X(end:-1:2))];
10:xprim = real(ifft(X));
11:x((b+1):(b+nfft)) = x((b+1):(b+nfft)) + (xprim.*win)';
12:end
13:else
14:for b = 0:h:(h*(coln-1))
15:X = stft(:, 1+b/h);
16:X = [X; conj(X(end-1:-1:2))];
17:xprim = real(ifft(X));
18:x((b+1):(b+nfft)) = x((b+1):(b+nfft)) + (xprim.*win)';
19:end
20:end
21:W0 = sum(win.^2);
22:x = x.*h/W0;
23:actxlen = length(x);
24:t = (0:actxlen-1)/fs;
25:end
测试信号1:
参数:
1:fs = 48000;
2:t = 0:1/fs:1-1/fs;
3:x = 10*sin(2*pi*t*10);
测试信号2: