基于平稳小波变换和非线性能量毛刺检测

青旅半醒 2022-10-07 08:55 229阅读 0赞

使用matlab 2014a,具体如下:

  1. function output = spikesDetection( wave, threshold, plotFlag)
  2. %spikesDetection 毛刺检测
  3. % 基于平稳小波变换swt和非线性能量检测算法,对毛刺进行特征增强后,根据阈值检测毛刺的位置
  4. % wave 一维矩阵,1xn, n必须为2N次方
  5. % threshold 阈值
  6. % plotFlag 是否打印结果图像,1打印
  7. % 输出如果下标为1,则该位置为毛刺
  8. n = length(wave); %获取长度
  9. output = zeros(1,n); %声明变量
  10. [swa,swd]=swt(wave,1,'coif2');%swa为近似信号,swd为细节信号,被检测信号序列必须为2N次方
  11. NEO = zeros(1,n); %声明变量
  12. NEO(1) = swd(1,1); NEO(n) = swd(1,n); %初始化开始第一个值和最后一个值
  13. for i= 2:length(wave)-1
  14. NEO(i) = swd(1,i)*swd(1,i) - swd(1,i-1)*swd(1,i+1);
  15. if NEO(i) > threshold
  16. output(i) = 1;
  17. end;
  18. end
  19. if plotFlag==1
  20. figure;
  21. subplot(2,1,1), plot(wave);
  22. subplot(2,1,2), plot(NEO);
  23. end
  24. end

主函数:

  1. clc;
  2. clear;
  3. t=0:1:127;
  4. y=sin(t/10);
  5. z=sin(t/5);
  6. for i = 1:64
  7. y(64+i) = z(i);
  8. end
  9. output = spikesDetection(y, 0.5,1);

发表评论

表情:
评论列表 (有 0 条评论,229人围观)

还没有评论,来说两句吧...

相关阅读

    相关 harr变换

    小波变换的基本思想是用一组小波函数或者基函数表示一个函数或者信号,例如图像信号。为了理解什么是小波变换,下面用一个具体的例子来说明小波变换的过程。 1. 求有限信号的均值和