【发布时间】:2023-03-29 11:44:01
【问题描述】:
我正在从事某种涉及模拟心电图(心电图)的项目。我通过在间隔之间生成一些随机数并将该数据发送到另一个程序来分析和绘制它来做到这一点。但是,问题是java代码在区间say [a,b]之间生成的随机数有很大的差异,这意味着下一个生成的随机值与前一个数字有很大的不同。我想要的是随机数流略有变化,使图形看起来很平滑。在这一点上,生成的图表非常尖锐,但我希望它像真实的 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();
}
}
谢谢
【问题讨论】:
-
你好,阿卜杜勒。你知道什么样的数学函数会绘制出类似心电图的图吗?这是您首先想到的,然后尝试实施它,如果您在某个地方遇到困难,您应该重新提出您的问题。
-
@Abdul:你可以看看bezier curves,在所谓的控制点上绘制平滑图。 (可能有一些库实现了这一点,提供了一个简单的 Java API)如果它看起来像一个真正的 ECG,你可能只想使用随机值来更早/更晚地绘制“心跳”和/或改变幅度。跨度>
标签: java random plot sensors graphing