学习《数字信号分析理论与实践》小结
这周在学堂在线学习了MATLAB信号处理方面的知识,作以下总结:
1.小波分解与重构:(离散二进正交小波变换)
a:逼近系数(平滑系数),d:细节系数(小波系数)
原信号s经1层小波分解:a1,d1;2层小波分解:a2,d2,d1;...n层小波分解an,dn,...,d1。
n层小波重构:s=an+dn+...+d1。
2.离散二进小波变换的缺点:数据量不断增大,2级小波变换则数据量增大3倍,在小波系数中有大量的冗余,既增大了数据存储也增大了计算量;正交小波变换数据量不会增加。
正交小波变换:
{X1,X2,X3,X4,X5,X6,...}:(差分)d={X1-X2,X3-X4,X5-X6,...},(平滑)a={X1+X2,X3+X4,X5+X6,...}。
小波重构:{X1,X2,X3,X4,X5,X6,...}。
正交分解的问题:频率混叠,小波系数存在频率混叠,因此一般不把小波系数用作分析,小波分解一般用来对信号进行滤波、分析,经过小波分解与重构,使过程中的混叠相互抵消,因此不影响对信号的分析。
离散二进正交小波变换:
尺度分别为1,2,4,8的小波多尺度分解:
3.基于小波变换的信号滤波步骤:
(1)先进行N层小波分解,用wavedec函数;
(2)然后将不需要的频段置0,即滤除不需要的频段信息,使用for函数;
例:for i=0:100
data(i)=0;
end
(3)最后进行小波重构得到滤波后信号,用waverec函数。
小波包变换与小波变换的区别:小波包变换每进行一级分解都对高频低频进行分解,信号重构有多种选择:
4.谱分析
(1)MATLAB中的傅里叶变换函数(FFT):
y=fft(x,n); %数据长度n必须是2的幂方,如256,512...
a=real(y); %a实频谱
b=imag(y); %b虚频谱
A1=abs(y); %幅值谱
Q1=angle(y)*180/pi; %相位谱
(2)FFT谱需注意的问题:
1)不显示负频率部分;(后N/2个点只是前N/2个点的镜像对称,没有意义)
2)X坐标换为频率;
3)幅值量纲还原。
f=linspace(0,Fs/2,N/2); %0~Fs/2之间产生N/2个点,X坐标换为频率
A1=abs(y)/(N/2); %幅值量纲还原
Q1=angle(y)*180/pi;
plot(f,A1(1:N/2)); %只显示正频率部分
plot(f,Q1(1:N/2));
(3)功率谱和对数功率谱:dB=20log(P)
A2=A1.^2; %计算功率谱
P2=20*log10(A2); %计算对数功率谱
plot(f,A2(1:N/2)); %功率谱(小能量信号可能被大能量信号掩盖)
plot(f,P2(1:N/2)); %对数功率谱(将大数与小数的差距缩小,能在一张图上显示小能量信号)
5.窗函数
信号截断—>能量泄露
FFT—>栅栏效应
加窗—>控制能量泄露—>减小栅栏效应误差
平顶窗的栅栏效应修正作用最好,注意窗函数要添加幅值修正系数。
信号的加窗谱分析:
Fs=5120;N=1024;
dt=1.0/5120.0;T=dt*N; %T=1/Fs*N
t=linspace(0,T,N);
x=10*sin(2*3.14*102*t);
subplot(411);plot(t,x); %原信号波形
w=hamming(N);w1=w';
subplot(412);plot(t,w1); %哈明窗波形
z=2*w1.*x; %2是幅值修正系数,窗函数需进行幅值修正,保证加窗后信号能量与原信号能量守恒
y=fft(z,N);
subplot(413);plot(t,z); %加窗后原信号波形
f=linspace(0,Fs/2,N/2);
A1=abs(y)/(N/2);
subplot(414);plot(f,A1(1:N/2)); %加窗后信号频谱
6.周期信号的相关函数还是周期的,噪声信号的相关函数只在零点有值,因此通过相关分析可以滤波。
相关函数xcorr:xcorr(x)自相关;xcorr(x,y)互相关。
信号的时差域相关分析:
N=1024;
T=0.2;
x=linspace(0,T,N);
y=sin(2*3.14*50*x);
figure;plot(x,y);
s1=xcorr(y,'unbiased'); %注意要加无偏修正unbiased,否则会两端衰减
x1=linspace(-T,T,2*N-1); %零点在中心
figure;plot(x1,s1); %调用自相关可滤除噪声信号