java心电图心率计算_java – 如何模拟心电图(心电图)

本文介绍了如何使用Java模拟平滑的心电图(心电图)。通过调整随机数生成的方式,结合正弦波函数和随机噪声,使模拟的图形更加接近真实心电图的变化。代码示例展示了如何在生成的随机数中加入正弦波调制,以减少尖锐的波动,实现平滑的图表效果。

我正在研究某种涉及模拟心电图(心电图)的项目.我是通过在间隔之间生成一些随机数并将该数据发送到另一个程序来分析和绘制它来实现的.但是,问题是在一个区间之间产生的随机数说[a,b]由java代码有很多方差,这意味着下一个生成的随机值与前一个数字有很大不同.我想要的是随机数的流量稍微变化,以便图表看起来平滑.此时,生成的图形非常尖锐,但我希望它是平滑的并且像真实的ECG图一样变化.

请帮帮我.

这是代码

//setup ECG graph

StdDraw.setXscale(0.0, 100.0);

StdDraw.setYscale(0.0,200.0);

StdDraw.setPenColor(StdDraw.BLUE);

StdDraw.setPenRadius(0.0009);

//generate random points between interval of range

int t = 0;

int prevVal = 0;

int nextVal;

while(true){

nextVal = range.getRandomValue();

System.out.println(nextVal);

StdDraw.point(prevVal, nextVal);

StdDraw.line(t-1, prevVal, t, nextVal);

StdDraw.show(100);

prevVal = nextVal;

t = (t+1) % 100;

if(t == 0){

StdDraw.clear();

}

}

谢谢

解决方法:

为什么不尝试使用sin(t)函数调制随机信号:

long n = 0;

double randomWeight = 0.5;

while(true) {

nextVal = range.getRandomValue();

double temp = AMPLITUDE*(randomWeight*((double)nextVal)+(1.0-randomWeight)*Math.sin(2.0*Math.PI*((double)n)*WIDTH_FACTOR));

nextVal = (long)temp;

n++;

System.out.println(nextVal);

StdDraw.point(prevVal, nextVal);

StdDraw.line(t-1, prevVal, t, nextVal);

StdDraw.show(100);

prevVal = nextVal;

t = (t+1) % 100;

if(t == 0){

StdDraw.clear();

}

想法是生成正弦波函数并向其添加一些随机噪声.

您可能希望将此噪声添加到方波中.我真的不太了解心电图的样子,但我想它必须受到心跳的支配.

编辑:

我刚刚检查了这些信号的样子:

在我看来,一个更准确的模型将由一个由周期性尖峰中断的相对平坦的随机信号给出:

long n = 0;

while(true) {

nextVal = range.getRandomValue();

if(n % SPIKE_PERIOD == 0) nextVal = SPIKE_APLITUDE*nextVal;

n++;

System.out.println(nextVal);

StdDraw.point(prevVal, nextVal);

StdDraw.line(t-1, prevVal, t, nextVal);

StdDraw.show(100);

prevVal = nextVal;

t = (t+1) % 100;

if(t == 0){

StdDraw.clear();

}

标签:java,random,plot,sensor,graphing

来源: https://codeday.me/bug/20190624/1279134.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值