1 简介
快速傅里叶变换( FFT) 是 1965 年 J W Cooley 和 J W Tukey 巧妙地利用 WN 因子的周期性和对称性,构造了离散傅里叶变换( DFT) 的快速算法,即快速离散傅里叶变换( FFT) 。DFT 的运算过程如下:
2 部分代码
%% 提取FFT谱作为故障特征向量 clc;close all;clear %% load data_process %% 2、加载数据 x1=train_X(1,:); % 采样点 L=length(x1); %采样频率 fs=48000; %采样间隔 Ts=1/fs; %采样点数 t=Ts:Ts:L*Ts; %轴承信号 % 3、对原始信号作图 figure plot(t,x1) title('原始信号') xlabel('采样点/n') ylabel('幅值') % 4、fft频谱 Y = fft(x1); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); f = fs*(0:(L/2))/L; figure bar(f,P1) title('FFT频谱') xlabel('频率/Hz') ylabel('幅值') %% 训练集 TZ=[]; for IIII=1:size(train_X,1) %依次对每个样本进行处理 x1=train_X(IIII,:);%轴承信号 Y = fft(x1); L=length(x1); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); TZ(IIII,:)=P1/max(P1); end disp('训练集提取完毕') train_X=TZ; %% 验证集 TZ=[]; for IIII=1:size(valid_X,1) %依次对每个样本进行处理 x1=valid_X(IIII,:);%轴承信号 Y = fft(x1); L=length(x1); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); TZ(IIII,:)=P1/max(P1); end disp('验证集提取完毕') valid_X=TZ; %% 测试集 TZ=[]; for IIII=1:size(test_X,1) %依次对每个样本进行处理 x1=test_X(IIII,:);%轴承信号 Y = fft(x1); L=length(x1); P2 = abs(Y/L); P1 = P2(1:L/2+1); P1(2:end-1) = 2*P1(2:end-1); TZ(IIII,:)=P1/max(P1); end disp('测试集提取完毕') test_X=TZ; %% 输入数据归一化 % [xs,mapping]=mapminmax(train_X',-1,1);train_X=xs'; % xs=mapminmax('apply',valid_X',mapping);valid_X=xs'; % xs=mapminmax('apply',test_X',mapping);test_X=xs'; %% 保存结果 save data_feature train_X valid_X test_X train_Y valid_Y test_Y
3 仿真结果
4 参考文献
[1]唐良宝, and 姜锐红. "基于FFT的循环自相关函数算法在滚动轴承故障诊断中的应用." 轴承 9(2009):5.