欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-31 20:46:46
...

使用matlab 2014a,具体如下:

function output = spikesDetection( wave, threshold, plotFlag)
%spikesDetection 毛刺检测
% 基于平稳小波变换swt和非线性能量检测算法,对毛刺进行特征增强后,根据阈值检测毛刺的位置
% wave 一维矩阵,1xn, n必须为2的N次方
% threshold 阈值
% plotFlag 是否打印结果图像,1打印
% 输出如果下标为1,则该位置为毛刺

n = length(wave); %获取长度
output = zeros(1,n); %声明变量

[swa,swd]=swt(wave,1,'coif2');%swa为近似信号,swd为细节信号,被检测信号序列必须为2的N次方

NEO = zeros(1,n); %声明变量
NEO(1) = swd(1,1); NEO(n) = swd(1,n);  %初始化开始第一个值和最后一个值
for i= 2:length(wave)-1
    NEO(i) = swd(1,i)*swd(1,i) - swd(1,i-1)*swd(1,i+1);
    if NEO(i) > threshold
        output(i) = 1;
    end;
end

if plotFlag==1
    figure;
    subplot(2,1,1), plot(wave);
    subplot(2,1,2), plot(NEO);
end

end

主函数:

clc;
clear;

t=0:1:127;
y=sin(t/10);

z=sin(t/5);
for i = 1:64
    y(64+i) = z(i);
end

output = spikesDetection(y, 0.5,1);

上一篇:

下一篇: