Gaussian Filter
PHP Code:
//Ayarlar
int Poles= 4; //1-2-3-4
int Period= 20;
//Veriler
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("YUksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var O = Sistem.GrafikFiyatSec("Açılış");
double _w;
double _aa, _a2, _a3, _a4, _c1, _c2, _c3, _c4;
double _b;
double r=0, y=0;
const double Pi = 22 / 7;
double Sqrt2 = Math.Sqrt(2.0);
_w = 2 * Pi / Period;
_b = (1 - Math.Cos(_w)) / (Math.Pow(Sqrt2, 2.0 / Poles) - 1);
if (Period == 1) _aa = 1.0;
else _aa = -_b + Math.Sqrt(_b * (_b + 2));
_c1 = 1.0 - _aa;
_c2 = _c1 * _c1;
_c3 = _c2 * _c1;
_c4 = _c3 * _c1;
_a2 = _aa * _aa;
_a3 = _a2 * _aa;
_a4 = _a3 * _aa;
var GaussianFilter = Sistem.Liste(0);
for (int i = Poles; i < C.Count; i++)
{
switch (Poles)
{
case 1:
r = _c1 * GaussianFilter[i-1];
break;
case 2:
r = 2 *_c1*GaussianFilter[i-1] - _c2*GaussianFilter[i-2];
break;
case 3:
r = 3*_c1*GaussianFilter[i-1] - 3*_c2*GaussianFilter[i-2] + _c3*GaussianFilter[i-3];
break;
case 4:
r = 4*_c1*GaussianFilter[i-1] - 6*_c2*GaussianFilter[i-2] + 4*_c3*GaussianFilter[i-3] - _c4*GaussianFilter[i-4];
break;
default:
break;
}
switch (Poles)
{
case 1:
y = _aa * C[i];
break;
case 2:
y = _a2 * C[i];
break;
case 3:
y = _a3 * C[i];
break;
case 4:
y = _a4 * C[i];
break;
default:
break;
}
GaussianFilter[i] = (float)(y + r);
}
Sistem.Cizgiler[0].Deger = GaussianFilter;
https://prnt.sc/lmz0b3
Yer İmleri