等级: 标准版
- 注册:
- 2021-12-10
- 曾用名:
|
我尝试实现高通滤波的公式,是通过python指标转移过来的
import numpy as np # 导入NumPy库,用于高效的数值计算def high_pass_3(data, length): """ 实现一个高通滤波器,使用递归方式处理输入数据。 参数: data : array-like 输入数据,通常是时间序列数据。 length : int 滤波器的长度(影响滤波器的频率响应)。 返回: hp : array 高通滤波后的数据。 """ # 计算滤波器的频率 f = 1.414 * np.pi / length # 计算滤波器系数 a1 = np.exp(-f) c2 = 2 * a1 * np.cos(f) c3 = -a1 * a1 c1 = (1 + c2 - c3) / 4 # 计算常数c1 # 初始化高通滤波后的数据数组 hp = np.zeros(len(data)) # 通过递归公式计算高通滤波后的数据 for i in range(2, len(data)): hp += c1 * (data - 2 * data[i-1] + data[i-2]) # 应用差分公式 hp += c2 * hp[i-1] # 使用前一个滤波值 hp += c3 * hp[i-2] # 使用前两个滤波值 return hp # 返回高通滤波后的数据然后我的pel公式如下:
input:N(15,1,100);// 高通滤波器a1 := EXP(-1.414 * 3.14159 / N);b1 := 2 * a1 * COS(1.414 * 180 / N);c2 := b1;c3 := -a1 * a1;c1 := (1 + c2 - c3) / 4;// 如果当前不是前几日,则应用平滑公式VARIABLE:HighPass:=0;IF BARSCOUNT(close) < 4 THEN HighPass := 0;HighPass := c1 * (c - 2 * REF(c, 1) + REF(c, 2)) + c2 * REF(HighPass, 1) + c3 * REF(HighPass, 2); lineHighPass:HighPass;
我的问题是1:这个高通滤波器的公式不知道为啥出来的曲线怎么都不对,我感觉是不是数据的问题,内存引入的数据不是从零开始的,导致计算有问题;
2、是我公式写的不对还是怎么?请问有什么办法在金字塔实现高通滤波器吗?
|
|