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

使用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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值