做一组数据的FFT和功率谱变换相关问题求指教
初学信号处理,做一组振动加速度数据的处理,遇到一些很困惑的问题,想请大家帮忙解答一下!①这个数据画出的时域图形总感觉有点不对。是不是我的AD数值转换成振动加速度值时出了问题?
②做出来的FFT图像,公驴皮图像感觉不太对劲。无法分辨。
现附上具体的代码和结果,请大家指教一下。
clear all;
=uigetfile('*.tei','手动选择数据文件');
datafileposition=
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('功率谱');
真没前辈来给指点一下吗 频谱图最开始出现幅值很大的点,导致后面相对较小的幅值点无法分辨,原因是时域数据存在一定的低频趋势,趋势去掉后数据应该是在0幅值上下波动,这样求出的FFT频谱就可以分辨了。 一开始,我的数据貌似用错了。 用了正确的数据。做出的频谱和功率谱如下。 在做完频谱之后,我做了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);
yaozirel 发表于 2017-12-4 23:25
频谱图最开始出现幅值很大的点,导致后面相对较小的幅值点无法分辨,原因是时域数据存在一定的低频趋势,趋 ...
您的意思是先做一下“去趋势向处理”吗,需要再进行滤波吗。 去趋势处理是需要的,如果能滤波就更好了 Pxx=(abs(y.^2)/nfft)*2;%'直接法'功率谱
这边求功率谱密度是对的吗,,我怎么看有的地方最后是除以2
页:
[1]