- bool CxImage::DFT(int dir,long m,double *x1,double *y1,double *x2,double *y2)
- {
- long i,k;
- double arg;
- double cosarg,sinarg;
-
- for (i=0;i<m;i++) {
- x2[i] = 0;
- y2[i] = 0;
- arg = - dir * 2.0 * 3.14159265358f * i / (double)m;
- for (k=0;k<m;k++) {
- cosarg = cos(k * arg);
- sinarg = sin(k * arg);
- x2[i] += (x1[k] * cosarg - y1[k] * sinarg);
- y2[i] += (x1[k] * sinarg + y1[k] * cosarg);
- }
- }
-
- /* Copy the data back */
- if (dir == 1) {
- for (i=0;i<m;i++) {
- x1[i] = x2[i] / m;
- y1[i] = y2[i] / m;
- }
- } else {
- for (i=0;i<m;i++) {
- x1[i] = x2[i];
- y1[i] = y2[i];
- }
- }
-
- return true;
- }
bool CxImage::DFT(int dir,long m,double *x1,double *y1,double *x2,double *y2)
{
long i,k;
double arg;
double cosarg,sinarg;
for (i=0;i<m;i++) {
x2[i] = 0;
y2[i] = 0;
arg = - dir * 2.0 * 3.14159265358f * i / (double)m;
for (k=0;k<m;k++) {
cosarg = cos(k * arg);
sinarg = sin(k * arg);
x2[i] += (x1[k] * cosarg - y1[k] * sinarg);
y2[i] += (x1[k] * sinarg + y1[k] * cosarg);
}
}
/* Copy the data back */
if (dir == 1) {
for (i=0;i<m;i++) {
x1[i] = x2[i] / m;
y1[i] = y2[i] / m;
}
} else {
for (i=0;i<m;i++) {
x1[i] = x2[i];
y1[i] = y2[i];
}
}
return true;
}