首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python从离散采样数据点获得最高的两个峰值?

如何使用python从离散采样数据点获得最高的两个峰值?
EN

Stack Overflow用户
提问于 2022-04-04 21:58:07
回答 1查看 92关注 0票数 1

我有雷达数据的车辆走得更远,雷达输出一个.csv文件。一旦雷达检测到什么,振幅列就从0切换到1,并开始输出值,并绘制横幅。例如,在这里:

当距离/振幅列从0到某个数时,可以推断雷达已经看到了目标。因此,绘制第一个实例的行会发出这个蓝波。

如果我们画出它下面的几行,我们得到了这个,

雷达被放在后面,所以目标离它很远。X轴表示距离乘以.077 m,因此,对于第一个蓝色波,雷达记录的距离为37*.077m。我想知道是否有一种方法可以从.csv文件中得到一个范围的值来考虑这两个峰值,例如:我想知道如何从蓝波中得到前两个峰值,得到它们的x轴坐标,然后为它们得到一个中值点,并跟踪它的橙色,这是第一列之下的第二行。

我已经附上了下面的.csv文件。https://drive.google.com/file/d/1IJOebiXuScjLPytemulcXph7ZB1X65wU/view?usp=sharing

我有一个算法,它获取第一次命中和最后一次命中的索引,例如,当从0切换到值和从值切换到0时,这些算法允许我在雷达检测到目标时捕捉到。当我使用雷达直接给出的值时,这是很有帮助的,比如距离和振幅值,但是现在我需要一整行,我不知道如何处理。我不知道Pandas或Numpy是否有办法处理这件事

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-04 22:38:20

有几种方法可以得到峰值,从而得到两个峰值位置。获取数据集的导数。导数数据与x轴相交的点将是原始数据的峰值和低谷。在这样做的同时,你也可以获取那些高峰和山谷的指数。从这里,您可以迭代原始数据中的这些点,以获得两个最大值及其索引。

看起来会是这样的:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import numpy as np


# My data set (example is a crazy cosine wave)
x = np.linspace(1, 100, 1000)
y = np.cos(x*0.5)*((x - 50)**3)

# Find first derivative:
m = np.diff(y)/np.diff(x)

# Get indicies of peaks and valleys
c = len(m)
indices = []
for i in range(1, c):
    prev_val = m[i-1]
    val = m[i]
    if prev_val < 0 and val >= 0:
        indices.append(i)
    elif prev_val > 0 and val <= 0:
        indices.append(i)

# Get the values, positions, and indicies of the two peaks
max_list = [0, 0]
index_list = [0, 0]
pos_list = [0, 0]
for index in indices:
    val = y[index]
    if val > max_list[0]:
        max_list[0] = val
        index_list[0] = index
        pos_list[0] = x[index]
    elif val > max_list[1]:
        max_list[1] = val
        index_list[1] = index
        pos_list[1] = x[index]


print('Two peak indices:', index_list)
print('Two peak values:', max_list)
print('Two peak x-positions:', pos_list)

average_pos = (pos_list[0] + pos_list[1])/2

print('Average x-position:', average_pos)



plt.plot(x, y)
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71744198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档