我已经实现了一个算法来检测给定峰值的负部分。它容易受到异常值影响的主要问题是,有什么建议可以改进它吗?
def stepdown(self):
peak_location_y = self.spec[self.peak_idx]
peak_indcies = self.peak_idx
spec_y = self.spec
neg_peak = []
for peak_index, peak_y in zip(peak_indcies, peak_location_y):
i = 1
tmp = [0]
try:
while (
peak_y >= spec_y[peak_index + i]
and
spec_y[peak_index + i - 1] >= spec_y[peak_index + i]
):
tmp.append(peak_index + i)
i += 1
neg_peak.append(tmp[-1])
except IndexError:
print("Index Error")
return neg_peak我知道代码的质量很糟糕。我只是在做原型。这里是当它工作在correctly和当它fail的例子。图的上半部分是算法检测到的负峰,下半部分是正峰。
发布于 2020-04-02 20:01:37
如果你提供了类的其余部分,那就太好了,例如什么是self.spec?
此外,您还可以提供一些有关算法如何工作的详细信息。
由于您已经标记了scipy,如果还没有的话,我将建议您查看scipy.signal.find_peaks。
https://stackoverflow.com/questions/60920366
复制相似问题