一维信号去噪分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一维信号滤波分析
读取实验数据,绘制一维时域谱,如图1所示
23.8
23.8523.923.95
2424.0524.124.1524.2
0.0408
0.0410.04120.04140.04160.0418
0.0420.0422
0.0424运动位置
信号幅值
原始信号
图1
下面对信号进行FFT 变换: Fs=1024;%假定采样频率 N=597;%实际采样点数
y=xlsread('C:\Documents and Settings\Administrator\桌面
\Book2.xls'); y=y';
y1=fft(y);
y2=10*log10((abs(y1).^2)); figure; plot(y2);
title('fft 变换')%做FFT 变换 Ay2=abs(y2); %取模
Ay2=Ay2/(N/2); %换算成实际的幅度 Ay2(1)=Ay2(1)/2;
F=([1:N]-1)*Fs/N; %换算成实际的频率值,Fn=(n-1)*Fs/N figure
plot(F(1:N/2),Ay2(1:N/2)); %显示换算后的FFT 模值结果 title('幅度-频率曲线图');
得到信号频谱如图2
0100200300400500600
0.05
0.1
0.15
0.2
0.25
0.3
0.35
幅度-频率曲线图
图2
由于大多数信号噪声频率都为高频,所以可以先尝试设计一个简单的带通滤波器,这里采用窗函数法,根据FFT 变换得到的频谱图取通带为50~350Hz ,算法函数如下: Fs=1024; N=597; n=36;
y=xlsread('C:\Documents and
Settings\Administrator\
桌
面
\Book2.xls'); y=y';
x=xlsread('C:\Documents and Settings\Administrator\桌面
\Book1.xls'); x=x';
Wn=[50,350]*2/Fs;%归一化频率 b=fir1(n,Wn);
yf=filter(b,1,y); figure; plot(x,y);
xlabel('运动位置'); ylabel('信号幅值');
title('窗函数法滤波后的信号')
滤波器频谱响应如图3
00.10.2
0.30.40.50.60.70.80.91
-3000
-2000
-1000
Normalized Frequency (⨯π rad/sample)
P h a s e (d e g r e e s )
00.10.2
0.30.40.50.60.70.80.91
-100
-50
50
Normalized Frequency (⨯π rad/sample)
M a g n i t u d e (d B )
滤波后得到滤波信号如图4
23.8
23.8523.923.95
2424.0524.124.1524.2
0.0408
0.0410.04120.04140.04160.0418
0.0420.0422
0.0424运动位置
信号幅值
窗函数法滤波后的信号
图4
从图4可以看出,噪声部分被滤除,但这样设计的带通滤波器对去噪没有明显的效果,并且在未知采样频率的情况下对不确定信号进行FFT 变换的效果并不理想,而小波分析则克服了这种缺陷,它对随机信号具有多分辨率分析的特点,在时域和频域都有表征信号局部信息的能力,时间窗和频率窗都可以根据信号的具体形态动态调整,在一般情况下,在低频
部分可以采用较低的时间分辨率,而提高频率的分辨率,在高频情况下可以用较低的频率分辨率来换取精确的时间定位。 针对以上实验数据,这里采用的思路是先对信号进行低层分解强度去噪,然后通过阈值信号处理,得到最终的滤波信号,小波算法函数设计如下: y=xlsread('C:\Documents and Settings\Administrator\桌面\Book2.xls'); y=y';
x=xlsread('C:\Documents and
Settings\Administrator\
桌
面
\Book1.xls'); x=x';
[c,l]=wavedec(y,1,'db1');%用db1小波对原始信号进行1层分解并提取系数 ca1=appcoef(c,l,'db1',1);%提取近似系数 cd1=detcoef(c,l,1);%提取1阶详细系数
cdd1=zeros(1,length(cd1));%对信号进行强制性去噪处理并显示结果 c1=[ca1 cdd1];
s1=waverec(c1,l,'db1');%多层次的一维小波重构
N=2;%N 越大,分解的层数越多,则能滤除更多噪声,同时取值过大也会导致信号失真 yd=wden(s1,'rigrsure','h','mln',N,'sym20');%rigrsure 阈值信号处理 figure;
plot(x,yd);
xlabel('运动位置'); ylabel('信号幅值');
title('小波分析滤波后的信号')
得到滤波信号如图5
23.8
23.8523.923.95
2424.0524.124.1524.2
0.0408
0.0410.04120.04140.04160.0418
0.0420.0422
0.0424运动位置
信号幅值
小波分析后滤波信号
图5
如图5所示,信号有明显改善,大部分噪声已去除,但是波形还是很不规则。假设信号是