一种基于Blaschke Unwinding自适应傅里叶分解的信号压缩算法及其在心电图ECG信号上的应用的新型算法(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

本文介绍了一种基于Blaschke unwinding自适应傅里叶分解(AFD)的新型信号压缩算法。Blaschke unwinding AFD是一种新开发的信号分解理论。它在每个分解步骤中利用Nevanlinna分解和最大选择原则,实现更快的收敛速度和更高的保真度。所提出的压缩算法应用于心电图信号。为了评估所提出的压缩算法的性能,除了通用的评估标准外,我们还考虑了与临床需求相关的较少讨论的标准 - 为了心率变异性分析目的,评估了R峰信息的保留准确性。实验是在MIT-BIH心律失常基准数据库上进行的。结果表明,所提出的算法比其他最先进的方法表现更好。同时,它也很好地保留了R峰信息。

随着移动设备技术的进步以及其在不同领域,特别是医疗系统中的应用增加,对高效数据传输的需求也在增加。心电图(ECG)在医疗系统中无处不在,并且在移动医疗系统中起着关键作用。移动健康系统的一个显著特点是其能够持续记录心电图信号[1, 2]。持续记录的心电图信号使医生能够发现在医生就诊期间很难发现的罕见事件。因此,我们希望尽可能长时间地记录信号。由于带宽和电池支持等物理限制,需要一种具有高压缩质量的信号压缩工具。

自适应傅立叶分解(AFD)是一种新开发的信号处理技术,它推广了传统的傅立叶分解,并且有几种实现AFD的算法。除了本文中选择的Blaschke Unwinding AFD[3],还有Core AFD[4]、Cyclic AFD[5]等。在[6]中对不同AFD算法进行了详细比较。总的来说,与基于预先选择的基础的普通变换方法不同,AFD通过根据某种选择原则从Takenaka-Malmquist(TM)系统中自适应地选择其相关基础,来分解给定的解析信号[4, 7]。由于其对信号的适应性,我们可以基于AFD设计一个具有高重建质量的高效信号压缩工具。详细文章见第4部分。

📚2 运行结果

部分代码:

function [S2,a1,r1]=Quanti(S1,a,r)
% Quantization step
S1=round(10*S1);
S2=S1/10;
S=[real(S2) imag(S2)];
a=round(100*a);
a1=a/100;
a=[real(a) imag(a)];
r=round(100*r).';
r1=r/100;
r=[real(r) imag(r)];

M=[S;a;r];

% Huffman coding
%%
tmp=unique(M);
b=zeros(size(tmp));
N=numel(M);
for i=1:length(tmp)
    b(i,1)=length(find(M==tmp(i)))/N;
end
u=b.';
%%
[u,k]=sort(u);
k=fliplr(k);
a=fliplr(u);
[m,n]=size(u);
B=zeros(n,n-1);
for i=1:n
    B(i,1)=a(i);
end
for j=1:n-2
    tmp=B(n-j+1,j)+B(n-j,j);
    a(n-j+1)=0;
    a(n-j)=tmp;
    a=fliplr(sort(a));
    for i=1:n
        B(i,j+1)=a(i);
    end
    r=find(a==tmp);
    B(n,j+1)=r(end);
end
index=cell(n,n-1);
index{1,n-1}='0';
index{2,n-1}='1';
t=2;
for t=2:n-1
    index{t,n-t}=[index{B(n,n-t+1),n-t+1},'0'];
        index{t+1,n-t}=[index{B(n,n-t+1),n-t+1},'1'];
        if(B(n,n-t+1)==1)
            for j=1:t-1
                index{j,n-t}=index{j+1,n-t+1};
            end
        else
            for j=1:B(n,n-t+1)-1
                index{j,n-t}=index{j,n-t+1};
            end
            for j=B(n,n-t+1):t-1
                index{j,n-t}=index{j+1,n-t+1};
            end
        end
end
for i=1:n
    len(i)=length(index{i,1});
end
u=fliplr(u);
avlen=sum(len.*u); % average code length
H=sum(-u.*log2(u)); % sourse entropy
P=H/avlen; % code efficiency
q=avlen;
[l1, l2]=size(M);
% CR=8*length(f1)/(q*l1*l2);
% CR_n=8*length(f1)/(8*l1*l2);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1] Chunyu Tan, Liming Zhang, Hau-tieng Wu (2018) Blaschke Unwinding AFD Based ECG Compression.

🌈4 Matlab代码、数据、文章

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值