Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么峰值指数()似乎忽略了提供的阈值?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在检索分别保存着信号的功率级和频率的阵列屏蔽门()方法:</p> <pre><code>Pxx, freqs = plt.psd(signals[0], NFFT=2048, Fs=sdr.sample_rate/1e6, Fc=sdr.center_freq/1e6, scale_by_freq=True, color="green") </code></pre> <p><a href="https://i.stack.imgur.com/okqWw.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/okqWw.png" alt="enter image description here"/></a> 请忽略绿色和红色信号。只有蓝色的和这个问题有关。在</p> <p>我可以拥有峰值指数()方法返回(蓝色信号的)多个最显著峰值的X和Y坐标:</p> ^{pr2}$ <p><a href="https://i.stack.imgur.com/YHmZH.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YHmZH.png" alt="enter image description here"/></a> 如图所示,这些坐标与蓝峰非常吻合。在</p> <p>我不满意的是从峰值指数()方法。我希望只返回高于某个功率电平的所有峰值的坐标,例如-25(对于蓝色信号,这将正好是5个峰值)。根据峰值指数()方法这是通过提供所需的值作为<code>thres</code>参数来完成的。在</p> <p>但是不管我用<code>thres</code>来尝试什么,这个方法似乎完全忽略了我的值,而是仅仅依赖<code>min_dist</code>参数来确定返回峰值的数量。在</p> <ul> <li>我的阈值有什么问题(我相信在我的代码中它意味着“峰值高于60%的曲线图”),以及如何正确地指定某个功率电平(而不是百分比值)?在</li> </ul> <p><strong>[编辑]</strong></p> <p>我发现显然<code>thres</code>参数只能取浮点0之间的正值。和1。 因此,通过如下所示稍微改变我的行,我现在可以根据需要影响返回峰值的数量:</p> <pre><code>indexes = peakutils.peak.indexes(np.array(power_lvls), thres=0.4, min_dist=1) </code></pre> <p>但这仍然给我留下了一个问题:是否有可能将结果限制在五个最高的峰值(前提是高于thres>;=5的峰数)。在</p> <p>我相信下面这样的东西会返回五个最高值:</p> <pre><code>print(power_lvls[np.argsort(power_lvls[indexes])[-5:]]) </code></pre> <p>但是不幸的是,负值似乎被解释为power\lvls数组中的最高值。是否可以更改该行,使(+)10被视为高于,例如-40?或者还有其他更好的吗解决方案?在</p> <p><strong>[编辑2]</strong></p> <p>以下是我得到的六个“最高”峰值: <a href="https://i.stack.imgur.com/VA2HT.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VA2HT.png" alt="enter image description here"/></a></p> <pre><code>power_lvls = 10*log10(Pxx/(sdr.sample_rate/1e6))+10*log10(8/3) indexes = peakutils.indexes(power_lvls, thres=0.35, min_dist=1) power_lvls_max = power_lvls[np.argsort(power_lvls[indexes])[-6:]] print("Highest Peaks in Signal:\nX: \n\nY: {}\n".format(power_lvls_max)) </code></pre> <p>在尝试了几个小时没有任何改进之后,我开始认为这些既不是低谷也不是高峰,只是一些“随机”值?!这让我相信,我的阿格索特线有问题,我必须先弄清楚?!在</p> <p><strong>[编辑3]</strong></p> <p>在瓶颈.分区()方法似乎返回了正确的值(即使它显然是以随机顺序返回的,而不是从最左边的峰值返回到最右边的峰值):</p> <pre><code>import bottleneck as bn power_lvls_max = -bn.partition(-power_lvls[indexes], 6)[:6] </code></pre> <p><a href="https://i.stack.imgur.com/i1lF4.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/i1lF4.png" alt="enter image description here"/></a> 幸运的是,峰的顺序对于我计划用坐标来做的事情并不重要。但是,我必须找出如何将我现在的Y值与它们对应的X值相匹配。。。在</p> <p>另外,虽然我现在确实有一个解决方案,但出于学习目的,了解我的argsort尝试有什么问题仍然很有趣。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>解决这个问题的一个简单方法是在处理之前向Pxx向量添加一个常量(例如+50db)。这样你就可以避开负值峰值。处理完成后,可以再次减去该常数,以获得正确的峰值。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
7 回答
无法使用Django\u mssql\u后端迁移到外部hos
1 回答
无法使用Django&Python3.4连接到MySql
6 回答
无法使用Django+nginx上载媒体文件
4 回答
无法使用Django1.6导入名称模式
1 回答
无法使用Django1.7和mongodb登录管理站点
5 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
5 回答
无法使用Djangockedi验证CBV中的字段
1 回答
无法使用Djangocketditor上载图像(错误400)
1 回答
无法使用Djangocron进行函数调用
5 回答
无法使用Djangofiler djang上载文件
10 回答
无法使用Djangokronos
10 回答
无法使用Djangomssql provid
10 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
10 回答
无法使用Djangomssq迁移Django数据库
8 回答
无法使用Djangonox创建用户
1 回答
无法使用Djangopyodb从Django查询SQL Server
9 回答
无法使用Djangopython3ldap连接到ldap
7 回答
无法使用Djangoredis连接到redis
6 回答
无法使用Django中的FK创建新表
3 回答