数据采集与信号处理(个人整理版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.基本内容:基于FFT的功率谱分析程序设计与应用
1)对一个人为产生的信号,采用FFT变换方法进行功率谱分析
已知信号x(n)=100.0*COS(2*3.14*S F*n/F S) +50.0*COS(4*3.14*S F*n/F S),n=0,1,2 ……N-1
式中:N---采样点数,必须为2x
S F---信号频率,S F=10 Hz
F S---采样频率
其FFT变换结果X(k)可用下面提供的FFT子程序求出,计算功率谱的公式为:
G(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计算。处理结果(时域波形或频谱)采用窗口显示,并且拷贝至作业稿中。
注意:除FFT分析程序可参考附件所附的程序外,其余程序必须自己设计(小波或EMD除外),后面限选题目要求与此相同。
该信号的处理结果如下:
其matlab程序如下:
SF=10.0;%信号频率
N=1024;%采样点数
n=0:1023;%时间轴N个点
FS=300;%采样频率
t=n/FS;
x=100.0*cos(2*3.14*SF*t) +50.0*cos(4*3.14*SF*t);
figure;
plot(t,x);%信号输出
xlabel('t');
ylabel('y');
title('时域波形');
grid;
y1=fft(x,N);%FFT运算
mag=abs(y1);
f=(0:length(y1)-1)*FS/length(y1);
figure;
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('幅频谱图');
grid;
Pyy1 =(y1.*conj(y1))*2/N;%取功率普密度
figure;
plot(f,Pyy1);
xlabel('频率(Hz)');
ylabel('功率谱密度');
title('功率谱密度');
grid;
2)对一个用A/D数据采集板采集的信号进行频谱分析参考数据文件名(见作业文件压缩包):
①fanbo_45HZ_1024_1000HZ,45Hz方波发生器输出信号采集结果,采样频率1000Hz,采样点数1024
② sin_45HZ_1024_1000HZ,45Hz正弦波发生器输出信号采集结果,采样频率1000Hz,采样点数1024
③ A_1_1024_1000HZ,汽轮机轴向振动位移信号采集结果,采样频率1000Hz,采样点数1024
数据文件名的含义,如文件名为fanbo_45HZ_1024_1000HZ,表示45Hz方波信号,采样点数1024,采样频率1000Hz
①该信号处理结果如下:
其matlab程序如下:
SF=45;%信号频率
N=1024;%采样点数
n=0:1023;%时间轴N个点
FS=1000;%采样频率
t=n/FS;
x=load('D:\fanbo_45HZ_1024_1000HZ.txt');
figure;
plot(t,x);%信号输出
xlabel('t');
ylabel('y');
title('时域波形');
grid;
y1=fft(x,N);%FFT运算
mag=abs(y1);
f=(0:length(y1)-1)*FS/length(y1); figure;
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('幅频谱图');
grid;
Pyy1 =(y1.*conj(y1))*2/N;%取功率普密度figure;
plot(f,Pyy1);
xlabel('频率(Hz)');
ylabel('功率谱密度');
title('功率谱密度');
grid;
②该信号的处理结果如下:
其matlab程序基本同上。
③该信号处理结果如下:
其matlab程序基本同上。
3)讨论
1. 信号经过零均值化处理或不经过零均值化处理的结果比较。
对于已知信号x=100.0*cos(2*3.14*SF*t) +50.0进行处理,结果如下:
该信号的非零均值相当于在此信号的低频段叠加上了一个直流分量,可以看到在零频率处出现一个很大的谱峰,并会影响在零频率左、右处的频谱曲线,使之产生较大误差。零均值化处理后零频率出的谱峰消失,并去除了干扰。
其matlab处理程序如下:
FS=300;%采样频率
n=0:300;
N=1024;%采样点数
SF=10.0;%信号频率
t=n/FS;
x=100.0*cos(2*3.14*SF*t) +50.0;%产生波形序列
window=boxcar(length(x));%矩形窗
[P,f]=periodogram(x,window,N,FS);%直接法
subplot(211)
plot(f,P);
title('信号未零均值化的功率谱波形图');
xlabel('频率');
ylabel('功率谱密度');
%零均值化的信号
avg=mean(x);
x1=x-avg;
window=boxcar(length(x));%矩形窗
[P,f]=periodogram(x1,window,N,FS);%直接法
subplot(212);
plot(f,P);
title('信号零均值化后的功率谱波形图');
xlabel('频率');
ylabel('功率谱密度');
2.采用不同窗函数时的谱结果分析(矩形窗函数, 汉宁窗函数,汉明窗)。