数据来源:

PhysioBank ATM

下面资源还在审核的话,就用上面的链接下载

MIT- BIH 正常窦性心律数据 nsrdb-16265


针对数据ECG1和ECG2进行DCCA分析。

绿色为ECG1和ECG2基于DCCA的线性拟合

【需要去掉注释才能显示】

红色为ECG1基于DFA的线性拟合

蓝色为ECG2基于DFA的线性拟合


需要注意如下:

1. 数据以对数曲线表示。

2. 这里时间长time=3 间隔s=0.03 数据长度只取到3000 为了避免错误,请确保【数据长度>=10^time】

3. 基于FDA算ECG1和ECG2的DCCA,整体和DFA代码结构一致。

4. 拟合是线性的,可根据自己数据情况考虑更换二次(比如金融数据)及以上。具体方法:DFA的第三个参数:线性=1,二次=2,以此类推

5. 由于在sqrt开方负数会存在虚部,因此防止np.sqrt时出现nan无效数据,这里采用cmath.sqrt保留虚数,与正常DFA里的sqrt有区别。


DFA实例在这 DFA去趋势波动分析 实例 python_Blossom Flight的博客-CSDN博客

以下DCCA代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import cmath# def DFA(data,ni,fittime):
#     n = len(data)//ni
#     nf = int(n*ni)
#
#     n_mean =np.mean(data[:nf])
#     y = []
#     y_hat = []
#     for i in range(nf):
#         y.append(np.sum(data[:i+1]-n_mean))
#     for i in range(int(n)):
#         x = np.arange(1,ni+1,1)
#         y_temp = y[int(i*ni+1)-1:int((i+1)*ni)]
#         coef = np.polyfit(x,y_temp,deg=fittime)
#         y_hat.append(np.polyval(coef,x))
#     fn = np.sqrt(sum((np.asarray(y)-np.asarray(y_hat).reshape(-1))**2)/nf)
#     return fndef DCCA(data1,data2,ni,fittime):n = len(data1) // ninf = int(n * ni)n1_mean = np.mean(data1[:nf])n2_mean = np.mean(data2[:nf])y1 = []y2 = []y1_hat = []y2_hat = []for i in range(nf):y1.append(np.sum(data1[:i+1]-n1_mean))y2.append(np.sum(data2[:i+1]-n2_mean))for i in range(int(n)):x = np.arange(1,ni+1,1)y1_temp = y1[int(i*ni+1)-1:int((i+1)*ni)]coef1 = np.polyfit(x,y1_temp,deg=fittime)y1_hat.append(np.polyval(coef1,x))y2_temp = y1[int(i * ni + 1) - 1:int((i + 1) * ni)]coef2 = np.polyfit(x, y2_temp, deg=fittime)y2_hat.append(np.polyval(coef2, x))fn = cmath.sqrt(sum((np.asarray(y1) - np.asarray(y1_hat).reshape(-1))*(np.asarray(y2) - np.asarray(y2_hat).reshape(-1))) / nf)return fndf = pd.read_csv('nsrdb-16265.csv')
ECG = df['ECG1'].values[:3000]time = 3
s = 0.03
t = np.arange(1,time,s)
n = []
for i in range(len(t)):n.append(int(10**t[i]))
# f = []
# for i in range(len(n)):
#     f.append(DFA(ECG,n[i],1))
# coef = np.polyfit(np.log10(n),np.log10(f),1)
# y_hat = np.polyval(coef,np.log10(n))
# for i in range(len(n)):
#     y_hat[i] = 10**y_hat[i]
# plt.plot(n,y_hat,c='r')
#
#
ECG2 = df['ECG2'].values[:3000]
#
# f2 = []
# for i in range(len(n)):
#     f2.append(DFA(ECG2,n[i],1))
# coef2 = np.polyfit(np.log10(n),np.log10(f2),1)
# y2_hat = np.polyval(coef2,np.log10(n))
# for i in range(len(n)):
#     y2_hat[i] = 10**y2_hat[i]
# plt.plot(n,f2,'o')
# plt.plot(n,y2_hat,'b')f_dcca = []
for i in range(len(n)):f_dcca.append(DCCA(ECG,ECG2,n[i],1))
coef_dcca = np.polyfit(np.log10(n),np.log10(f_dcca),1)
ydcca_hat = np.polyval(coef_dcca,np.log10(n))
for i in range(len(n)):ydcca_hat[i] = 10**ydcca_hat[i]
plt.plot(n,ydcca_hat,'g')
plt.xlabel('n')
plt.ylabel('F(n)')
plt.xscale('log')
plt.yscale('log')
plt.show()

DCCA互相关系数 实例 python相关推荐

  1. python零基础实例-Python初学零基础也不怕,从0开始!

    Python3 列表.列表是咱们在python中最常用的数据模型,他承担的重要的人物,也展示出了他强大的一面. 序列是Python中最根本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索 ...

  2. python程序实例讲解_python入门编程实例 python入门编程实例解析

    python入门编程实例 python入门编程实例解析 python入门编程实例及解析: 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...

  3. python代码实例-python程序实例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...

  4. python列表转化为数字信号_python 经典数字滤波实例 Python 数字信号处理程序实现分享解...

    常用的数字滤波的方法都有哪些,写出其中三种数字经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念.根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成.换句话说,就 ...

  5. DCCA互相关系数 理论

    Cross-correlation analysis of stock markets using EMD and EEMD 源自2.4小节 DCCA方法是由Podobnik和Stanley[31]最 ...

  6. Python3 实例--Python 平方根(**,cmath,复数的i和j部分)

    #Python3 实例--Python 平方根 print("Python3 实例--Python 平方根") #求正数的平方根 num = float(input()) num_ ...

  7. 手把手的K-means聚类算法教程(含简介及教育数据应用实例 Python实现)

    手把手的K-means聚类算法教程(含简介及教育数据应用实例 Python实现) 1. K-MEANS的基本原理 2. 数据预处理 2.1 数据读取:from Excel 2.2 数据预处理:标准化Z ...

  8. python课堂实例,Python电子教案2 1 Python程序实例解析课堂

    <Python电子教案2 1 Python程序实例解析课堂>由会员分享,可在线阅读,更多相关<Python电子教案2 1 Python程序实例解析课堂(41页珍藏版)>请在人人 ...

  9. 模拟退火算法详细讲解(含实例python代码)

    模拟退火算法详细讲解(含实例python代码) (一)模拟退火算法简介 (二)模拟退火算法原理 (三)退火过程中参数控制 (四)算法步骤 (五)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之 ...

最新文章

  1. android开发toast通知,Toast Notifications
  2. iPad 3将获得Retina视网膜显示技术
  3. Java泛型详解,通俗易懂
  4. oracle 数据库的非指令备份方法
  5. oracle主从表分离怎么实时更新数据_高可用数据库UDB主从复制延时的解决
  6. python图像线条提取_python3 图像细化(提取骨架线)
  7. “哇靠”,小米最AI手机MIX 2S发布了
  8. PWM DAC vs. Standalone
  9. webApp调试页面的几种方式
  10. JDBC学习(五、预编译语句对象)
  11. 鸿蒙升级最佳时间,鸿蒙升级时间确定,17款华为优先,荣耀或成遗珠!
  12. 关系型数据库学习手记——初见倾心PostgreSQL、MySQL、SQLite、MongoDB
  13. 欧陆词典导入词典库(自定义英文词典)
  14. 怎么检查计算机硬盘有没有供电,终于知道电脑硬件怎样全部检测
  15. idea中各种颜色的含义
  16. 图解Pandas,数据结构介绍 | 图文第1篇
  17. mysql中长整型是longint_整型int和长整型long
  18. linux6.5 xmanager配置,CentOS6.5安装Xmanager远程桌面
  19. Android —MVP架构—登录页面示例
  20. 车辆自然驾驶轨迹数据集/交通流数据介绍

热门文章

  1. 关于linux使用动态库进行进程间通讯
  2. codeforces 1395D Boboniu Chats with Du(DP、思维)
  3. 苹果cms安装mysql检测失败_maccms(苹果cms)采集过程报错--MySQL server has gone away错误的解决办法...
  4. 【Unity特效】LWRP/URP(Lightweight RP/Universal RP)和ShaderGraph下载及安装配置
  5. 科东软件与工信部电子五所达成战略合作,共同推动国产工业基础软件高质量发展
  6. do{} while(0) 只执行一次无意义?你可能真的没理解
  7. 视频去水印哪个好用-视频去水印怎么去除
  8. 操作系统开发--GDT(全局描述符表)详解
  9. 面试的五个注意事项,被录用很简单
  10. 41岁中兴员工:这可能是我第5次失业_中兴被美国制裁的思考