如何水平拉伸信号?

问题描述 投票:0回答:1

我有一个包含两列的数据框。这是随深度变化的信号示例:

import matplotlib.pyplot as plt 
import pandas as pd

df = pd.DataFrame({"DEPTH":[5, 10, 15, 20, 25, 30, 35, 40, 45, 50],
                   "PROPERTY":[23, 29, 26, 17, 15, 20, 28, 25, 20, 17]})

plt.figure()
plt.plot(df["PROPERTY"],
         df["DEPTH"])
plt.xlabel("PROPERTY")
plt.ylabel("DEPTH")
plt.gca().invert_yaxis()
plt.grid()

但我想水平拉伸我的信号,这样我就可以看到它更“宽”。在我的真实数据中,我的信号是平滑的(几乎平坦)。例如,高值应该更高,低值应该更低,就像这个新的橙色信号:

有人知道我该怎么做吗?如果我乘以一个数字,所有的值都会更高。

python matplotlib signal-processing scaling
1个回答
0
投票

此代码将按比例因子水平拉伸信号

exaggeration

它的工作原理是将信号置于 0 中心,使用所需的比例因子放大波峰/波谷,然后将平均值加回去。

import matplotlib.pyplot as plt 
import pandas as pd

df = pd.DataFrame({"DEPTH":[5, 10, 15, 20, 25, 30, 35, 40, 45, 50],
                   "PROPERTY":[23, 29, 26, 17, 15, 20, 28, 25, 20, 17]})
exaggeration = 5
plt.figure()
plt.plot(df["PROPERTY"], df["DEPTH"], label='original')
plt.plot(exaggeration * (df["PROPERTY"] - df.PROPERTY.mean()) + df.PROPERTY.mean(),
         df["DEPTH"], label=f'exaggerated {exaggeration}x')
plt.xlabel("PROPERTY")
plt.ylabel("DEPTH")
plt.gca().invert_yaxis()
plt.grid()
plt.legend()
© www.soinside.com 2019 - 2024. All rights reserved.