📄 split2.c
字号:
/******************************************************************************
FILE
split2.c - This is the C source code for the implmentation of the
split routine which is the additinal computations in computing the
DFT of two N-point real-valued sequences using one N-point complex DFT.
******************************************************************************
DESCRIPTION
Computation of the DFT of two N-point real-valued sequences can be
effiecently computed using one N-point complex DFT and some additional
computations. This function implements these additional computations
which are shown belw.
X1r[0] = Xr[0]
X1i[0] = 0
X2r[0] = Xi[0]
X2i[0] = 0
X1r[N/2] = Xr[N/2]
X1i[N/2] = 0
X2r[N/2] = Xi[N/2]
X2i[N/2] = 0
for k = 1,2,3, ...., N/2-1
X1r[k] = (Xr[k] + Xr[N-k])/2
X1i[k] = (Xi[k] - Xi[N-k])/2
X1r[N-k] = X1r[k]
X1i[N-k] = X1i[k]
X2r[k] = (Xi[k] + Xi[N-k])/2
X2i[k] = (Xr[N-k] - Xr[k])/2
X2r[N-k] = X2r[k]
X2i[N-k] = X2i[k]
*****************************************************************************/
#include "params.h"
void split2(int N, COMPLEX *X, COMPLEX *X1, COMPLEX *X2)
{
int k;
X1[0].real = X[0].real;
X1[0].imag = 0;
X2[0].real = X[0].imag;
X2[0].imag = 0;
X1[N/2].real = X[N/2].real;
X1[N/2].imag = 0;
X2[N/2].real = X[N/2].imag;
X2[N/2].imag = 0;
for (k=1; k<N/2; k++)
{
X1[k].real = (X[k].real + X[N-k].real)/2;
X1[k].imag = (X[k].imag - X[N-k].imag)/2;
X2[k].real = (X[k].imag + X[N-k].imag)/2;
X2[k].imag = (X[N-k].real - X[k].real)/2;
X1[N-k].real = X1[k].real;
X1[N-k].imag = -X1[k].imag;
X2[N-k].real = X2[k].real;
X2[N-k].imag = -X2[k].imag;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -