2023年认证杯SPSSPRO杯数学建模C题(第一阶段)心脏危险事件全过程文档及程序

news2024/11/18 18:40:37

2023年认证杯SPSSPRO杯数学建模

C题 心脏危险事件

原题再现:

  心脏的每一次搏动都伴随着心脏的电生理活动。心脏的起博点通过放电,使电流传导到每个心肌纤维,接收到电信号后,相应的心肌纤维完成一次收缩,心脏也就随之搏动一次。而心脏的电信号可以传导到体表皮肤,并且不同体表部位所检测到电信号表现不同。这样,在体表的特定部位放置电极,通过心电图机,可以记录到心电数据。对患有严重心脏疾病的人来说,心电的实时监测是检测心律失常的重要手段。
  为使心电监测更加有效,心电图机应当在心电图产生异常时能够做到实时报警。所以我们需要在很短时间内对心律失常进行正确的判断。我们在已有的心电图数据中找到了一些有代表性的片段,其中有正常心搏,也有多种心律失常的情况。每个片段长度为 2 秒。在数据文件中,我们记录的是心电波形的功率谱密度,从 0 Hz 到 180 Hz,频率间隔为 0.5 Hz。也就是第一行记录的是 0 Hz(直流分量)的数据,第二行记录的是 0.5 Hz,第三行记录的是 1Hz,依此类推。
  第一阶段问题:
  1. 请你和你的团队建立有效的数学模型,将所给的数据文件进行分类。除正常心搏外,请将心律失常的情况分为不同的类别,并指明类别的总数;
  2. 请给出每种心律失常类型的判断标准,以便我们能够核实判断方法的生理学意义,并将判断方法应用到临床监测设备上;
  3. 某些类型的心律失常一旦发生,心脏立即失去供血功能,此时病人的情况极为危急。另外一些类型的心律失常则不会如此危险,我们可以有稍多一些的救治时间。请参考正常的心搏过程,估计每种心律失常情况的危险程度,按照危险程度对数据文件进行粗略的排序或分级。

整体求解过程概述(摘要)

  本文首先通过对附件中存放的 869 组心律失常以及 147 组心律正常的心电波形的功率谱密度数据进行分析,利用 K-means 和 DBSCAN 两种聚类算法对心律失常数据进行了聚类划分,最终确定为 4 类心电功率谱。之后我们给出了心律失常数据聚类划分依据的特征参数的概念以及其对应的生理意义和临床诊断价值。最后,将心律失常数据与正常心律数据进行对比分析,将不同心律失常情况按照规定的标准进行了危险等级的简单划分。
  针对问题一,我们首先将数据导入到 Matlab 中,分析心律失常的心电波形的功率谱密度数据,对所有数据进行集中观察,发现 7 条数据的直流分量及主峰异常大,将其作为后续分类是否有效的参考。之后我们提取了基频、谱峰大小、谱峰数量、平均值、标准差等 9 个特征参数并进行了归一化及标准化的预处理,利用 K-means 和 DBSCAN 两种聚类算法对心律失常数据进行了聚类划分并进行结果对比及分析。
  针对问题二,我们根据所选特征参数的概念以及功率谱密度的意义和心脏活动的过程,对各特征参数进行了介绍以及其对于临床检测意义的说明。将功率谱密度与常规时域心电图判断心律失常类型的方法进行对比研究,并判断所划分的几种心律失常类型的可能病症。
  针对问题三,我们首先将正常数据和异常数据进行同样的特征参数提取以及预处理,将众多正常数据总结提取出一条最具代表性的数据,将异常数据与之进行差异性计算,根据差异结果进行心律异常数据的危险等级划分和排序。

问题分析:

  依照心脏起搏过程,心电图机可以很好地记录心电信号。对于患有严重心跳的病人,心电实时检测是很重要的。为在短时间做到心电信号的检测并报警,可以进一步观察短时间电信号片段的功率谱密度。在研究过程中,我们将充分利用现有心电图数据中的有代表性片段,包括正常心搏和多种心律失常情况。每个片段长度为 2 秒,数据文件记录的是心电波形的功率谱密度,从 0 Hz 到 180 Hz,频率间隔为 0.5 Hz。我们将依据这些数据,结合先进的计算机技术,开发出自动识别心律失常类型的模型,为心电监测提供实时报警功能,以提高诊断效率和准确率。
  问题一:将所给心律异常数据进行分类。
  思路分析:首先将数据导入到 Matlab 中,分析心律失常的心电波形的功率谱密度数据,将所有数据画在同一张图中进行集中观察。根据观察结果提取分类所需特征参数并进行一定的预处理,之后利用聚类算法对心律失常数据进行了聚类划分并进行结果对比分析。
  问题二:给出每种心律失常类型的判断标准,以便核实判断方法的生理学意义并实际应用。
  思路分析:根据所选特征参数的概念,结合功率谱密度的意义和心脏活动的过程对各特征参数进行介绍,说明对于临床检测的意义。将功率谱密度图与常规时域心电图判断心律失常类型的方法进行对比研究,判断所划分的几种心律失常类型的可能病症。若要应用到实际检测中,可将分类结果作为数据集利用 BP、CNN 等神经网络等进行模型训练,用于对实际病症的辅助诊断。
  问题三:参考正常的心搏过程,估计每种心律失常情况的危险程度,并按照危险程度对数据文件进行粗略的排序或分级。这将有助于医生迅速判断患者的病情严重程度,并采取相应的救治措施。
  思路分析:将心律正常数据进行和异常数据同样的特征参数提取以及预处理,将处理后的众多正常数据总结提取出一条最具代表性的数据,将异常数据与之一一进行差异计算,根据差异结果进行心律异常数据的危险等级划分和排序。

模型假设:

  1.假设题目所给的数据真实可靠
  2.假设数据具有普遍性和适用性
  3.假设心电图功率谱密度可以完全反映心率失常的情况
  4.假设病人心电图检查时未受外界的影响
  5.假设模型可以反映所有心律失常情况

完整论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档notfree)

clc
close all
clear
% X1=load('C:\All1\2023.csv');
% X2=load('C:\All1\20234.csv');
C1=importdata('C:\All1\20345.txt');
C2=importdata('C:\ist.txt');
% C1(1)
for c1=1:length(C1)
 X1(:,c1)=load(strcat('C:\thm\',cell2mat(C1(c1))));
end
for c2=1:length(C2)
 X2(:,c2)=load(strcat('C:\bnormal\',cell2mat(C2(c2))));
end
% for i1=1:length(C1)
% X1_max=max(X1(2:end,i1));
% X1(:,i1)=X1(:,i1)/X1_max;
% end
% for i2=1:length(C2)
% X2_max=max(X2(2:end,i2));
% X2(:,i2)=X2(:,i2)/X2_max;
% end
figure
for i=1:length(C1)
% subplot(211)
 plot(0:0.5:180,10*log(X1(1:end,i)),'LineWidth',1);
 xlabel('频率(Hz)')
 ylabel('物理功率谱密度(dBW)')
 set(gca,'FontSize',14,'FontName','Times New Roman')
 grid on
 subplot(212)
 plot(X2(2:25,i));
end
X11=X1(2:100,:);
X22=X2(2:100,:);
for ii=1:length(X11)
 plot(X1(2:100,ii));
 [pks1,loc1]=findpeaks(X11(:,ii));
 num_peak(ii)=length(loc1);
 for i=1:length(pks1)-1
 range(i)=loc1(i+1)-loc1(i);
 end
 range_peak(ii)=mean(range);
 loc_max(ii)=loc1(pks1==max(pks1));
 pks_max(ii)=max(pks1);
 base_fre(ii)=loc1(1)*0.5;
 energy(ii)=sum(X1(2:100,ii));
 mean_cs(ii)=mean(X1(2:100,ii));
 %stan_cs(ii)=sqrt(sum(X1(2:25,ii)-mean_cs(ii))/(25-2));
 DC(ii)=X1(1,ii);
 stan_cs(ii)=std(X1(2:100,ii));
 
Feature(:,ii)=[num_peak(ii);range_peak(ii);loc_max(ii);pks_max(ii);base_fre(ii);energy(ii);DC(ii);stan_cs(ii)
];
 
end
Feature=[Feature;ones(1,147)];
for ii2=1:length(X22)
plot(X2(2:100,ii2));
 [pks2,loc2]=findpeaks(X22(:,ii2));
 num_peak2(ii2)=length(loc2);
 for i=1:length(pks2)-1
 range2(i)=loc2(i+1)-loc2(i);
 end
 range_peak2(ii2)=mean(range2);
 loc_max2(ii2)=loc2(pks2==max(pks2));
 pks_max2(ii2)=max(pks2);
 base_fre2(ii2)=loc2(1)*0.5;
 energy2(ii2)=sum(X2(2:100,ii2));
 DC2(ii2)=X2(1,ii2);
 stan_cs2(ii2)=std(X2(2:100,ii2));
 ratio_max2(ii2)=X22(loc2(pks2==max(pks2))+1)/max(pks2);
 %Feature2(:,ii2)=[num_peak2(ii2);range_peak2(ii2);loc_max2(ii2);pks_max2(ii2);base_fre2(ii2);energy2(ii2);
stan_cs2(ii2)];
end
max1=max(num_peak2);
num_peak2=num_peak2/max1;
max2=max(range_peak2);
range_peak2=range_peak2/max2;
max3=max(loc_max2);
loc_max2=loc_max2/max3;
max4=max(pks_max2);
pks_max2=pks_max2/max4;
max5=max(base_fre2);
base_fre2=base_fre2/max5;
max6=max(energy2);
energy2=energy2/max6;
max7=max(stan_cs2);
stan_cs2=stan_cs2/max7;
max8=max(DC2);
DC2=DC2/max8;
max9=max(ratio_max2);
ratio_max2=ratio_max2/max9;
Feature2=[num_peak2;range_peak2;loc_max2;pks_max2;base_fre2;energy2;stan_cs2;DC2;ratio_max2];
%stan=[std(num_peak2),std(range_peak2),std(loc_max2),std(pks_max2),std(base_fre2),std(energy2),std(stan_cs2),
std(DC2),std(ratio_max2)];
%D= pdist(Feature2, 'seuclidean',stan);
%Feature2=[Feature2;zeros(1,869)];
%feature=[Feature,Feature2];
% figure
% for i=1:length(C1)
% X11=0.5*[flip(X1(2:end,i));X1(:,i)];
% plot(X11)
% plot(abs(ifft(X11)))
% 
% end

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot【开发实用篇】---- 整合第三方技术(监控)

SpringBoot【开发实用篇】---- 整合第三方技术(监控) 1. 监控的意义2. 可视化监控平台3. 监控原理 在说监控之前,需要回顾一下软件业的发展史。最早的软件完成一些非常简单的功能,代码不多,错误也少。随着软件功能的逐…

在Window10和Window11系统,WPF使用Viewport3D 渲染失败问题解决方案

最近遇到个棘手的问题:在供应商提供的戴尔optiplex 3000的12代处理器主机的集成显卡Intel(R) UHD Graphics 770上使用Viewport3D 渲染失败(3D模型显示不了,或者是显示不全),之前开发验证使用的是集成显卡Intel(R) UHD …

【FOSS】新一代绿色节能对象存储

01 背景概述 2020年9月中国明确了“碳达峰、碳中和”目标,2021年,碳达峰、碳中和被首次写入政府工作报告。该事件标志着中国对促进经济高质量发展,社会繁荣和生态环境保护的决心。 据IDC白皮书预测,中国将在2025年成为全球最大数…

团队数千人,苹果XR头显核心高管大曝光

上周,彭博社Mark Gurman从参与研发的相关人士了解到的消息,阐述了苹果XR头显开发简史。本周,继续公布了参与到苹果XR头显研发工作的一些关键岗位或高管人士。相关阅读:《苹果XR头显简史:现实困境与未来预期》 Mark Gu…

Flutter Overlay 你用上了么

Flutter Overlay 你用上了么 前言 Flutter中的Overlay是一个用于在屏幕上显示浮层的组件。它可以用来在应用程序中创建弹出窗口、提示框、菜单、对话框等等。 Overlay通常用于在用户与应用程序交互时显示临时性的UI元素,例如:用户点击按钮时显示下拉菜单…

3dMax一键窗户可入库插件使用方法详解

3dMax一键窗户(可入库)插件使用教程 3dMax一键窗户(可入库)插件,支持在选中的多边形上创建窗户模型,并可以自定义窗户形状,保存到库里下次使用。 【安装方法】 1.复制“窗户样本”文件夹到D盘根目录(D:\窗户样本) 2.拖动插件脚本到3dmax视口中打开即可。 【创建窗户】…

SolidWorks装配体中让弹簧随装配体运动的方法

弹簧是我们日常设计中最常用的几种零部件之一,但是弹簧不跟螺栓一样装好之后是相对静止的,弹簧在装配好后需要进行运动,在SolidWorks装配体中可以让弹簧跟随其他物体运动,操作分为三大步: 一、创建弹簧(使…

微服务: Seata AT 分布式事务配置出现异常解决(相当全面)(下篇)

目录 1. 文章传送门 -> 上篇传送门: 微服务: Seata AT 分布式事务以及配置方式(上篇) -> 中篇传送门: 微服务: Seata AT springCloud整合分布式事务以配置方式(中篇) 2. 异常总结分类: 3. 解决上述问题: -> 解决上述问题一: 1. no available service null f…

面了一个测试工程师要求月薪23K,总感觉他藏了很多面试题...

最近有朋友去华为面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…

七人拼团系统开发模式,如何做到短短几个月就销售额上亿?

随着经济的迅速发展,市场上的商业模式也是层出不穷,而且各具特色,看得人眼花缭乱。最近又新出了一个七人拼团商业模式,不仅能够助力企业快速裂变获客,还能迅速提升产品销量,达到短短几个月就销售额上亿的“…

MariaDB 主从同步配置

1 服务器结构 角色ip地址安装教程主节点192.168.31.102CentOS-7 安装 MariaDB-10.8从节点192.168.31.103 2 原理: 原理: (1)master服务器将数据的改变记录到二进制binlog日志,当master上的数据发生改变时&#xff0c…

【连续介质力学】张量场

张量场 张量场表示张量 T ( x ⃗ , t ) T(\vec x, t) T(x ,t)在空间 x ⃗ \vec x x 和时间 t t t中如何变化,将张量场视为可微函数 如果一个张量场不依赖于时间,则此张量场称为定常场,例如 T T ( x ⃗ ) T T(\vec x) TT(x );相…

如此优秀的低代码平台,佬们一起来体验一把!

前言:低代码平台是一种新兴的应用开发技术,将可视化建模、自动生成代码和开发者编写的代码结合在一起,使应用程序的开发变得更加快速、简单且高效。低代码平台的基本思想是通过消除繁琐的手动编码工作,来让开发者更好地专注于业务…

基于 Spring Boot + MyBatis Plus + Vue Element 实现的后台管理系统 + 微信小程序

管理后台的 Vue3 版本采用 vue-element-plus-admin ,Vue2 版本采用 vue-element-admin 管理后台的移动端采用 uni-app 方案,一份代码多终端适配,同时支持 APP、小程序、H5! 后端采用 Spring Boot、MySQL MyBatis Plus、Redis …

UnityVR--组件3--Line Renderer--线性渲染

目录 前言 Line Renderer组件介绍 Trail Renderer组件介绍 使用Line Renderer绘制线段 使用系统工具或自定义工具绘制线段 Trail Renderer简单制作子弹拖尾效果 前言 Line Renderer线性渲染组件用于在3D中渲染线段,如之前在小游戏中做过的激光门伤害&#xff0…

Axure设计—动态条形图(中继器)

本文将教大家如何用AXURE中的中继器动态条形图。 一、效果介绍 如图: 预览地址:https://i7x7i9.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87807039?spm1001.2014.3001.5503 二、功能介绍 简单填写中继…

PyQt5桌面应用开发(17):类结构+QWebEngineView

本文目录 PyQt5桌面应用系列PyQt5学习PyQt5类结构和帮助速查实现与解释最终界面和完整源代码界面完整的代码 总结 PyQt5桌面应用系列 PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌…

Spring 如何处理请求参数和表单数据

当我们开发 Web 应用程序时,处理请求参数和表单数据是必不可少的。Spring MVC 是一个流行的 Java Web 框架,提供了多种方式来处理请求参数和表单数据。本文将介绍 Spring MVC 中处理请求参数和表单数据的常用方式,并提供相应的代码示例。 处…

Redis数据结构-SDS

一、SDS(Simple Dynamic String,简单动态字符串) Redis没有使用C语言传统的字符串表示方式(以’\0’结尾的字符数组),而是自己实现了sds的抽象类型,Redis默认使用sds作为字符串的表示。 set ms…

新视野(2023.5.5-2023.5.12)

一、知识: 媒体账号买卖网站 A5新媒体交易:https://xmt.a5.net/ 新媒虎:https://www.xinmeihu.com/ 二、资讯: GPT最大的竞争对手Claude宣布支持100K的上下文!基本上一本中篇小说都能塞进去了,你再不需要ChatPDF这种…