注意
如果你的信号频率达到了采样频率的极限(奈奎斯特-香农采样定理),那么降采样将总是损坏信号。在你的情况下,你的尖峰类似于非常高频的信号,因此你需要非常高的采样频率。
(例如:你有三个点,中间一个有尖峰。你想将其降采样为2个点。把尖峰放在哪里?无处可放,因为你的样本不足。)
尽管如此,如果你真的想要降采样信号,并且仍然想要(或多或少地准确地)保留特定点(在你的情况下是尖峰),你可以尝试以下方法,该方法“保存”你的尖峰,降低采样信号,然后只在相应的降采样信号位置上应用“保存”的尖峰。
操作步骤:
1) 获取尖峰,或者换句话说,本地最大值(或最小值)。
例如:Pandas 找到本地最大值和最小值
2) 降低采样信号
3) 使用第1步得到的尖峰,替换相应的降采样位置上的值
(要考虑到你的信号将会受到损坏。你不能降低采样而不失去由一个或两个点表示的尖峰)
编辑
示例说明
这是一个保留尖峰的示例。它只是一个示例,现在它不能用于负值。
![enter image description here](https://istack.dev59.com/IWfvJ.webp)
import numpy as np
import matplotlib.pyplot as plt
from collections import deque
t = np.arange(1000)/100
y = np.sin(t*2*3.14)
y[150]=5
y[655]=5
y[333]=5
y[250]=5
def downsample(factor,values):
buffer_ = deque([],maxlen=factor)
downsampled_values = []
for i,value in enumerate(values):
buffer_.appendleft(value)
if (i-1)%factor==0:
downsampled_values.append(max(buffer_))
return np.array(downsampled_values)
plt.plot(downsample(10,y))
plt.show()
![enter image description here](https://istack.dev59.com/Xrfyr.webp)