大数据采集与信号处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据信息采集与处理
基本内容:基于FFT的功率谱分析程序设计与应用
1.基本要求
1)对一个人为产生的信号进行采用FFT变换方法进行功率谱分析。
已知信号x(n)=80.0*COS(2*3.14*SF*n/FS)
式中: n=0,1,2 ……N-1
SF---信号频率
FS---采样频率
其FFT变换结果X(k)可用下面提供的FFT子程序求出,计算功率谱的公式为: W(k)=2(XR(k)2 +XI(k)2)/N
式中:k=0,1,2 ……N/2-1
XR(k)--- X(k)的实部
XI(k)--- X(k)的虚部
请用VB,VC或C++Builder编译器编程,或采用MATLAB计算,或采用高级语言调用MATLAB计算。处理结果为采用窗口显示时域波形和频域波形。
此信号的时域谱、频域谱、功率谱如下面图1~图3所示:
图1
图2
图3 其MATLAB代码为:
FS=200;
SF=10;
N=1024;
n=0:N-1;
t=n/FS;
x=80.0*cos(2*3.14*SF*t);
figure;
plot(t,x);
xlabel('t');
ylabel('y');
title('x=80.0*cos(2*3.14*SF*t)时域波形');
grid;
y=fft(x,N);
mag=abs(y);
f=(0:length(y)-1)*FS/length(y);%进行对应的频率转换
figure;
plot(f(1:N/2),mag(1:N/2));%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('x=80.0*cos(2*3.14*SF*t)幅频谱图N=1024');
grid;
Py =2*(y.*conj(y))/N; %计算功率谱密度Py
figure;
plot(f(1:N/2),Py(1:N/2));
xlabel('频率(Hz)');
ylabel('功率谱密度');
title('x=80.0*cos(2*3.14*sf*t)功率谱密度');
grid;
2)对实验所采集的转子振动信号进行频谱分析
图4
其MATLAB代码:
SF=1000;
fid = fopen('D:\数据采集与信号处理作业\信号处理大作业
\sanjiao_45HZ_1024_1000HZ');%转子信号
[a,N]= fscanf(fid,'%f');
fclose(fid);
y=fft(a,N);%FFT运算
Pyy =sqrt(y.*conj(y))*2.0/N; %取功率普密度
f=(0:length(Pyy)-1)*SF/length(Pyy);
LPyy=20*log10(Pyy);
plot(f(1:N/2),Pyy(1:N/2));%输出FS/2点幅频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('转子振动信号频谱图');
grid;
2.讨论
1)信号经过均值化处理或不经过均值化处理的结果比较:
图5
图6
通过以上两个图(图5、图6)的分析,我们可以看出均值化处理后的频谱的低频段消失,这就去去除了常规的干扰频谱,如环境噪声等,对我们进行频谱分析有很大作用。
其MATLAB代码为:
Fs=200; %采样频率
n=0:1:200;
N=1024;
SF=10; %信号频率
xn=80.0*cos(2*3.14*SF*n/Fs)+70;%产生波形序列
window=boxcar(length(xn)); %矩形窗
nfft=512;%采样点数
[Pxx,f]=periodogram(xn,window,nfft,Fs); %直接法
plot(f,Pxx);
xlabel('频率(Hz)');
ylabel('功率谱密度');
title('含有直流分量的余弦曲线未均值化的功率谱波形图');
grid;
2)采用不同窗函数时的谱结果(矩形窗函数, 汉宁窗函数,汉明窗)如图7~12所示。
图7
图8 图9
图10 图11
图12
其MATLAB代码为:
y=fft(x,N);
mag=abs(y);
f=(0:length(y)-1)*FS/length(y);%进行对应的频率转换
w_han=(hanning(N))';
y1=x.*w_han;
figure;
plot(t,y1);
xlabel('t');
ylabel('y');
title('汉宁窗时域波形');
grid;
y2=mag.*w_han;
figure;
plot(f(1:N/2),y2(1:N/2));
xlabel('频率(Hz)');
ylabel('幅值');
title('汉宁窗频域特性');
grid;
w_rect=(rectwin(N))';