📄 realft.cpp
字号:
void realft(double data[], int &n, int &isign)
{
int n2p3,i,i1,i2,i3,i4;
double theta,c1,c2,wpr,wpi,wr,wi,wrs,wis,h1r,h1i,h2r;
double h2i,wtemp,wri;
wri=0.0;
theta = 6.28318530717959 / 2.0 / n;
c1 = 0.5;
if (isign == 1)
{
c2 = -0.5;
four1(data, n, 1);
}
else
{
c2 = 0.5;
theta = -theta;
}
wpr = -2.0 * sin(0.5 * theta) * sin(0.5 * theta);
wpi = sin(theta);
wr = 1.0 + wpr;
wi = wpi;
n2p3 = 2 * n + 3;
for (i = 2; i<=n / 2 + 1; i++)
{
i1 = 2 * i - 1;
i2 = i1 + 1;
i3 = n2p3 - i2;
i4 = i3 + 1;
wrs = float(wr);
wis = float(wi);
h1r = c1 * (data[i1] + data[i3]);
h1i = c1 * (data[i2] - data[i4]);
h2r = -c2 * (data[i2] + data[i4]);
h2i = c2 * (data[i1] - data[i3]);
data[i1] = h1r + wrs * h2r - wis * h2i;
data[i2] = h1i + wrs * h2i + wis * h2r;
data[i3] = h1r - wrs * h2r + wis * h2i;
data[i4] = -h1i + wrs * h2i + wis * h2r;
wtemp = wr;
wr = wr * wpr - wi * wri + wr;
wi = wi * wpr + wtemp * wpi + wi;
}
if( isign == 1 )
{
h1r = data[1];
data[1] = h1r + data[2];
data[2] = h1r - data[2];
}
else
{
h1r = data[1];
data[1] = c1 * (h1r + data[2]);
data[2] = c1 * (h1r - data[2]);
four1(data, n, -1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -