马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
毕业设计要做的关于小波变换对机械轴承中故障的检测
close all;
clear all;
clc;
%采样频率
fs=10000;
%采样间隔
Ts=1/fs;
%采样点数
N=1024;n=1/N;
%轴承信号
fid=fopen('nei.dat','r'); %'nei.dat'是轴承故障信号
xdata=fread(fid,N,'int16');
fclose(fid);
xdata=(xdata-mean(xdata))/std(xdata,1);
%信号时域波形
figure(1);
plot(1:N,xdata);
xlabel('时间 t/n');
ylabel('电压 V/v');
%使用db10小波进行尺度为5时的分解
[c,l]=wavedec(xdata,5,'db10');
%从小波分解结构[c,l]重构信号xdata
a0=waverec(c,l,'db10');
%检查重构效果
figure(2);
subplot(3,1,1);
plot(xdata);
title('原始信号')
subplot(3,1,2);
plot(a0);
title('重构信号')
subplot(3,1,3);
plot(xdata-a0);
title('误差信号')
err=max(abs(xdata-a0))
%重构第1~5层高频细节信号
d5=wrcoef('d',c,l,'db10',5);
d4=wrcoef('d',c,l,'db10',4);
d3=wrcoef('d',c,l,'db10',3);
d2=wrcoef('d',c,l,'db10',2);
d1=wrcoef('d',c,l,'db10',1);
%显示高频细节信号
figure(3);
subplot(5,1,1);
plot(d5,'LineWidth',2);
ylabel('d5');
subplot(5,1,2);
plot(d4,'LineWidth',2);
ylabel('d4');
subplot(5,1,3);
plot(d3,'LineWidth',2);
ylabel('d3');
subplot(5,1,4);
plot(d2,'LineWidth',2);
ylabel('d2');
subplot(5,1,5);
plot(d1,'LineWidth',2);
ylabel('d1');
xlabel('时间 t/s');
%第1层高频细节信号的包络谱
y=hilbert(d1);
ydata=abs(y);
y=y-mean(y);
nfft=1024;
p=abs(fft(ydata,nfft));
figure(4);
plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));
xlabel('频率 f/Hz');
ylabel('功率谱 P/W');
这个程序行不行啊 我在MATLAB上运行没什么问题了 |