karlard 发表于 2007-5-16 12:29

高手帮我看下程序,关于小波变换在MATLAB上的应用

毕业设计要做的关于小波变换对机械轴承中故障的检测


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时的分解
=wavedec(xdata,5,'db10');
%从小波分解结构重构信号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上运行没什么问题了

jytan 发表于 2007-5-16 17:47

plot((0:nfft/2-1)/nfft*fs,p(1:nfft/2));

fft折半以后,要在幅值上要乘2,
应该是
plot((0:nfft/2-1)/nfft*fs,2*p(1:nfft/2));

sunshihui 发表于 2007-5-21 17:26

我也是做故障诊断的,可是现在还苦于没有故障数据,你的故障数据能不能共享呀?
我的QQ是48791238,非常感谢!

sunshihui 发表于 2007-5-21 20:08

求助

楼主你好:我也要做小波方面的论文,可苦于没有故障数据。你有机械轴承中故障数据吗?能不能给我发一份,非常感谢!
我的邮箱是sunshihuixyg@163.com

karlard 发表于 2007-5-23 22:21

回复 #4 sunshihui 的帖子

今天晚上网络太卡了 明天把数据传给你吧
我也是在网上找的真实性不能负责
页: [1]
查看完整版本: 高手帮我看下程序,关于小波变换在MATLAB上的应用