声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2921|回复: 5

[HHT] 为什么频谱分析和包络谱分析以后的结果是一样的

[复制链接]
发表于 2015-5-28 19:33 | 显示全部楼层 |阅读模式

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

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

x
pjb.jpg
这是我们实验室采集到的轴承故障振动信号,为什么频谱图和包络谱图是一样的?

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2015-5-29 10:06 | 显示全部楼层
确定用过包络谱分析了?是不是程序里的图形显示命令都是显示的FFT?
 楼主| 发表于 2015-5-29 10:09 | 显示全部楼层
不是钱林 发表于 2015-5-29 10:06
确定用过包络谱分析了?是不是程序里的图形显示命令都是显示的FFT?

我把程序贴上来。
function hua_fft(y,fs,style,varargin)
%当style=1,画幅值谱;当style=2,画功率谱;当style=其他的,那么画幅值谱和功率谱
%对随机信号分析,功率谱才是有效的
%当style=1时,还可以多输入2个可选参数
%可选输入参数是用来控制需要查看的频率段的
%第一个是需要查看的频率段起点
%第二个是需要查看的频率段的终点
%其他style不具备可选输入参数,如果输入发生位置错误
nfft= 2^nextpow2(length(y));%找出大于y的个数的最大的2的指数值(自动计算最佳FFT步长nfft)
%nfft=1024;%人为设置FFT的步长nfft
y=y-mean(y);%去除直流分量,要不然第一个点的幅值很大
y_ft=fft(y,nfft)/length(y);%对y信号进行DFT,得到频率的幅值分布
y_p=y_ft.*conj(y_ft)/nfft;%conj()函数是求y函数的共轭复数,实数的共轭复数是他本身。相当于求模值
y_f=fs*(0:nfft/2-1)/nfft;%DFT变换后对应的频率的序列
if style==1
    if nargin==3
        plot(y_f,2*abs(y_ft(1:nfft/2)));%matlab的帮助里画FFT的方法
        %ylabel('幅值');xlabel('频率');title('信号幅值谱');
        %plot(y_f,abs(y_ft(1:nfft/2)));%论坛上画FFT的方法
    else
        f1=varargin{1};
        fn=varargin{2};
        ni=round(f1 * nfft/fs+1);
        na=round(fn * nfft/fs+1);
        plot(y_f(ni:na),abs(y_ft(ni:na)*2));
    end

elseif style==2
            plot(y_f,y_p(1:nfft/2));
            ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
    else
        subplot(211);plot(y_f,2*abs(y_ft(1:nfft/2))/length(y));
        ylabel('幅值');xlabel('频率');title('信号幅值谱');
        subplot(212);plot(y_f,y_p(1:nfft/2));
        ylabel('功率谱密度');xlabel('频率');title('信号功率谱');
end
end


function hua_baol (y,fs,style,varargin)
%画包络函数是hua_baoluo的代码简化版
%输入参数要么是3个,要么是5个
%当三个的时候,和hua-fft一样
y_hht=hilbert(y);%希尔伯特变换
y_an=abs(y_hht);%包络信号
%y_an=y_an-mean(y_an);%去除直流分量
    if nargin==3
        hua_fft(y_an,fs,style);
    elseif nargin==5
        f1=varargin{1};
        f2=varargin{2};
        hua_fft(y_an,fs,style,f1,f2);
    else
        error('调用函数的输入参数数目不正确,输入参数只能是三个或者五个');
    end
end
 楼主| 发表于 2015-5-29 10:10 | 显示全部楼层
不是钱林 发表于 2015-5-29 10:06
确定用过包络谱分析了?是不是程序里的图形显示命令都是显示的FFT?

帮我看一下,急求帮助
发表于 2016-6-30 22:13 | 显示全部楼层
个人理解 FFT转换就像一个玻璃一样 ,从正面看是一张玻璃 ,从侧面看就只是一条线
回复 支持 1 反对 0

使用道具 举报

发表于 2016-7-1 09:04 | 显示全部楼层
  1. % 包络分析(高中心频率的窄带信号分析)
  2. % 基于:两个信号乘积的Hilbert变换取决于高频信号的Hilbert变换
  3. clc
  4. clear all
  5. close all
  6. ts = 0.001;
  7. fs = 1/ts;
  8. N = 200;
  9. k = 0:N-1;
  10. t = k*ts;
  11. % 原始信号
  12. f1 = 10;
  13. f2 = 70;
  14. % a = cos(2*pi*f1*t);       % 包络1
  15. a = 2 + cos(2*pi*f1*t);     % 包络2
  16. % a = 1./(1+t.^2*50);       % 包络3
  17. m = sin(2*pi*f2*t);         % 调制信号
  18. y = a.*m;  % 信号调制
  19. figure
  20. subplot(241)
  21. plot(t, a)
  22. title('包络')
  23. subplot(242)
  24. plot(t, m)
  25. title('调制信号')
  26. subplot(243)
  27. plot(t, y)
  28. title('调制结果')
  29. % 包络分析
  30. % 结论:Hilbert变换可以有效提取包络、高频调制信号的频率等
  31. yh = hilbert(y);
  32. aabs = abs(yh);                 % 包络的绝对值
  33. aangle = unwrap(angle(yh));     % 包络的相位
  34. af = diff(aangle)/2/pi;         % 包络的瞬时频率,差分代替微分计算
  35. % NFFT = 2^nextpow2(N);
  36. NFFT = 2^nextpow2(1024*4);      % 改善栅栏效应
  37. f = fs*linspace(0,1,NFFT);
  38. YH = fft(yh, NFFT)/N;           % Hilbert变换复信号的频谱
  39. A = fft(aabs, NFFT)/N;          % 包络的频谱
  40. subplot(245)
  41. plot(t, aabs, t, a, '.')
  42. title('包络的绝对值')
  43. legend('包络分析结果', '真实包络')
  44. subplot(246)
  45. plot(t, aangle)
  46. title('调制信号的相位')
  47. subplot(247)
  48. plot(t(1:end-1), af*fs)
  49. title('调制信号的瞬时频率')
  50. subplot(244)
  51. plot(f,abs(YH))
  52. title('原始信号的Hilbert谱')
  53. xlabel('频率f (Hz)')
  54. ylabel('|YH(f)|')
  55. subplot(248)
  56. plot(f,abs(A))
  57. title('包络的频谱')
  58. xlabel('频率f (Hz)')
  59. ylabel('|A(f)|')
复制代码
baoluo.png
希望能给你带来帮助!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-25 00:54 , Processed in 0.075760 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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