声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2814|回复: 7

[FFT] 做一组数据的FFT和功率谱变换相关问题求指教

[复制链接]
发表于 2017-12-2 20:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
初学信号处理,做一组振动加速度数据的处理,遇到一些很困惑的问题,想请大家帮忙解答一下!
①这个数据画出的时域图形总感觉有点不对。是不是我的AD数值转换成振动加速度值时出了问题?
②做出来的FFT图像,公驴皮图像感觉不太对劲。无法分辨。
现附上具体的代码和结果,请大家指教一下。
clear all;
[datafile, datapath]=uigetfile('*.tei','手动选择数据文件');
datafileposition=[datapath datafile ]
fid=fopen(datafileposition,'r');
fseek(fid,500,-1);%定位指针位置(数据存在500位以后)
data=zeros(8192,1);%创建存放数据的数组
%读取AD数据(数据一共8192个)
for i=1:8192
    data(i)=fread(fid,1,'int16');
end
fs=2.56*8000;
vibdata=data.*(5000/2048/30);%将AD数值转换为振动加速度值,不知道对不对。
x=vibdata(:,1);%振动数据
figure(1);plot(x);axis tight;
n=length(x);%数据长度
nfft= 2^nextpow2(length(x));%fft变换的数据长度
ff=fs*(0:nfft/2-1)/nfft;%频率序列
y=fft(x,nfft);mag=abs(y);%fft
figure(2);
subplot(211);plot(ff,mag(1:nfft/2)*2/nfft); ylabel('幅值');xlabel('频率/Hz');title('FFT频谱');
Pxx=(abs(y.^2)/nfft)*2;%'直接法'功率谱
subplot(212);plot(ff,Pxx(1:nfft/2));ylabel('幅值'); xlabel('频率/Hz');title('功率谱');



代码

代码

时域图

时域图

FFT

FFT
回复
分享到:

使用道具 举报

 楼主| 发表于 2017-12-3 07:42 | 显示全部楼层
真没前辈来给指点一下吗
回复 支持 1 反对 0

使用道具 举报

发表于 2017-12-4 23:25 | 显示全部楼层
频谱图最开始出现幅值很大的点,导致后面相对较小的幅值点无法分辨,原因是时域数据存在一定的低频趋势,趋势去掉后数据应该是在0幅值上下波动,这样求出的FFT频谱就可以分辨了。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-12-5 08:42 | 显示全部楼层
一开始,我的数据貌似用错了。 用了正确的数据。做出的频谱和功率谱如下。
FFT与功率谱.png
 楼主| 发表于 2017-12-5 08:46 | 显示全部楼层
在做完频谱之后,我做了hilbert包络。结果如下,(包络谱去频率前1000画的图,因为画出完整的图我发现倍频出现在前面低频处。)这样的结果算是正确吗?程序及结果图如下。
clc;
clear all;
data=xlsread('C:\Users\Administrator\Desktop\轴承振动数据\0287-8-1-轴箱数据.xlsx','左侧轴箱数据');
fs=2.56*8000;
x=data(1:8192,1);%振动加速度的值数据
figure(1);plot(x);xlabel('样点');ylabel('幅值');title('原始振动信号');axis tight;
n=length(x);%数据长度
nfft= 2^nextpow2(length(x));%fft变换的数据长度
ff=fs*(0:nfft/2-1)/nfft;%频率序列
y=fft(x,nfft);mag=abs(y);%fft
figure(2);
subplot(211);plot(ff,mag(1:nfft/2)*2/nfft); ylabel('幅值');xlabel('频率/Hz');title('FFT频谱');
Pxx=(abs(y.^2)/nfft)*2;%'直接法'功率谱
subplot(212);plot(ff,Pxx(1:nfft/2));ylabel('幅值'); xlabel('频率/Hz');title('功率谱');
%求包络频谱
x1=hilbert(x);
z=sqrt(x1.^2+x.^2);
n1=length(z);
nfft1= 8192;
z1=fft(z,nfft1);
ff1=fs*(0:(nfft1)/2-1)/(nfft1);
mag1=abs(z1);
%定义频率、幅值
ff2=ff1(1,1:400);%取前400个频率值
mag2=mag1(1:400,1)*2/8192;
figure(3);plot(ff2,mag2);
包络谱.jpg
 楼主| 发表于 2017-12-5 08:50 | 显示全部楼层
yaozirel 发表于 2017-12-4 23:25
频谱图最开始出现幅值很大的点,导致后面相对较小的幅值点无法分辨,原因是时域数据存在一定的低频趋势,趋 ...

您的意思是先做一下“去趋势向处理”吗,需要再进行滤波吗。
发表于 2017-12-6 21:40 | 显示全部楼层
去趋势处理是需要的,如果能滤波就更好了
发表于 2018-5-8 00:20 | 显示全部楼层
Pxx=(abs(y.^2)/nfft)*2;%'直接法'功率谱  

这边求功率谱密度是对的吗,,我怎么看有的地方最后是除以2
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-27 11:33 , Processed in 0.100497 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表