如果信号值大于信号平均值,则画一条线

2024-05-23 22:32:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在图上画一条线,当我的信号值大于这个信号的平均值时。我的信号是肌肉拉伸和放松的简单连接

muscle_on2 = np.random.uniform(-1, 1, 1000) + offs
muscle_off = np.random.uniform(-0.05, 0.05, 500) + offs
emg = np.concatenate([muscle_off, muscle_on1, muscle_off, muscle_on2, muscle_off])

为了做到这一点,我尝试了以下方法:

pl.plot(x_axis)
for i in range(0, len(emg), 1):
    if emg[i]>RM:
        pl.plot([i, 1.0], [i, 1.0], 'r-', lw=5)

其中RM为:

RM = np.mean(emg)

但是,它不生成水平线,而是生成垂直线: enter image description here

有人能帮我吗

我忘了澄清这一点,在这种情况下,offs(偏移量已经过滤掉)这部分代码是用来显示我的信号是如何创建的。当我打印出照片上的平均值时,它在0.26左右振荡。我希望我的行在信号值大于平均值时出现,在信号值小于平均值时结束


Tags: rm信号plotnprandomuniform平均值pl
1条回答
网友
1楼 · 发布于 2024-05-23 22:32:09

您应该使用^{}

import matplotlib.pyplot as plt
import numpy as np

muscle_on2 = np.random.uniform(0, 1, 1000)
muscle_off = np.random.uniform(0, 0.05, 500)
emg = np.concatenate([muscle_off, muscle_on2, muscle_off])
RM = np.mean(emg)
plt.plot(emg)
plt.axhline(RM, color='r')
plt.show()

这会给你

enter image description here

或者^{}如果你不想一路穿过情节

import matplotlib.pyplot as plt
import numpy as np

muscle_on2 = np.random.uniform(0, 1, 1000)
muscle_off = np.random.uniform(0, 0.05, 500)
emg = np.concatenate([muscle_off, muscle_on2, muscle_off])
e = x[emg > RM]
plt.plot(x, emg)
plt.hlines(RM, e[0], e[-1], color='r', lw=2, zorder=3)
plt.show()

enter image description here


注意  -   关于{}的{}公约是

import matplotlib.pyplot as plt

而{a5}{}的公约是

import matplotlib.pylab as pl

如果您正在使用pylab,那么应该切换到pyplot,正如official usage guide所示

相关问题 更多 >