- 显示:
- 1758
- 等级:
- 已发布:
- 2016.12.22 11:27
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
真实作者:
klot
快速傅立叶变换函数库 (FFT)。
此函数库首次以 MQL4 实现, 并于 2006.10.02 发表在 代码库。
词库有七个快速傅立叶变换函数。
1. 复函数 FFT (直接和逆向)
void fastfouriertransform(double& a[], int nn, bool inversefft);
此算法依据实轴上定义的 nn 计数进行复函数快速傅立叶变换。根据传递的参数, 可以执行直接或逆变换。
输入参数:
- nn - 函数值的数量。必须是二的指数!!!该算法不检查所传递数值的正确性。
- a - 实数 [0 .. 2*nn-1] 数组。函数值。元素 a[2*I] (实数部分) 和 a[2*I+1] (虚数部分) 对应于第一个值。
- InverseFFT - 直接变换。True, 如果为逆向; False, 如果为直接。
输入参数:
- a - 结果变换。更多信息参阅位于 http://alglib.net/fasttransforms/ 的描述
2. 实函数 FFT (直接和逆向)
void realfastfouriertransform(double& a[], int tnn, bool inversefft);
此算法依据实轴上定义的 n 计数进行实函数快速傅立叶变换。根据传递的参数, 可以执行直接或逆变换。
输入参数:
- tnn - 函数值的数量。必须是二的指数!!!该算法不检查所传递数值的正确性。
- a - 实数 [0 .. nn-1] 数组。函数值。
- InverseFFT - 直接变换。True, 如果为逆向; False, 如果为直接。
输入参数:
- a - 结果变换。更多信息参阅位于 http://alglib.net/fasttransforms/ 的描述
3. 双实函数 FFT (仅有直接)
void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn);
此算法依据实轴上定义的 tn 计数进行双实函数快速傅立叶变换。算法可以节省您的时间, 但只能执行直接转换。
输入参数:
- tn - 函数值的数量。必须是二的指数!!!该算法不检查所传递数值的正确性。
- a1 - 实数 [0 .. nn-1] 数组。第一个函数的值。
- a2 - 实数 [0 .. nn-1] 数组。第二个函数的值。
输入参数:
- a - 第一个傅利叶变换函数
- b - 第二个傅利叶变换函数 (参阅网站上的详情) http://alglib.net/fasttransforms/
4. 快速离散正弦变换
void fastsinetransform(double& a[], int tnn, bool inversefst);
此算法依据实轴上定义的 tnn 计数进行实函数快速正弦变换。根据传递的参数, 可以执行直接或逆变换。
输入参数:
- nn - 函数值的数量。必须是二的指数!!!该算法不检查所传递数值的正确性。
- a - 实数 [0 .. nn-1] 数组。函数值。
- InverseFST - 逆变换。True, 如果为逆向; False, 如果为直接。
输入参数:
- a - 结果变换。更多信息参阅位于 http://alglib.net/fasttransforms/ 的描述
5. 快速离散余弦变换
void fastcosinetransform(double& a[],int tnn, bool inversefct);
此算法依据实轴上定义的 nn 计数进行实函数快速余弦变换。根据传递的参数, 可以执行直接或逆变换。
输入参数:
- tnn - 函数值的数量减一。必须是二的指数 (例如 1024)。该算法不检查所传递数值的正确性。
- a - 实数 [0..nn] 数组。函数值 (例如, 1025)。
函数变换数组准备的特性:
int element_count2=ArrayResize(array,tnn1+1); //对于余弦!!! - InverseFCT - 逆变换。True, 如果为逆向; False, 如果为直接。
输入参数:
- a - 结果变换。更多信息参阅位于 http://alglib.net/fasttransforms/ 的描述
6. FFT 快速简化
void fastcosinetransform(double& a[],int tnn, bool inversefct);
简化。函数之一被假设为一个信号。第二个认为是响应。
输入:
- Signal - 即简化的信号。实数数组, 从 0 到 SignalLen-1 的元素编号。
- SignalLen - 信号长度。
- Response - 响应函数。它由两个部分组成, 对应于一个参数的正/负值。
从 -NegativeLen 到 0 的响应值点数, 对应于从 0 到 NegativeLen 的数组元素。
从 1 到 PositiveLen 的响应值点数, 对应于从 NegativeLen 到 NegativeLen+PositiveLen 的数组元素。 - NegativeLen - 响应的 "Negative length"
- PositiveLen - 响应的 "Positive length"。
超越 [-NegativeLen, PositiveLen] 的响应等于零。
输出:
- Signal - 函数简化的值从 0 到 SignalLen-1。
7. FFT 快速相关
void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen);
输入:
- Signal - 进行相关数组信号。元素编号从 0 到 SignalLen-1
- SignalLen - 信号长度。
- Pattern - 我们正在寻找的信号相关数组形态。元素编号从 0 到 PatternLen-1
- PatternLen - 形态长度
输出:
- Signal - 相关点数值从 0 到 SignalLen-1。访问网站了解更多详细说明。http://alglib.net/fasttransforms/
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/7000