mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-05-24 11:12:26 -04:00
Experiment to remove DC / other spikes
Seemed logical to use the repeating parts of the forward/back FFT results to overlap and cancel out spikes -- seems to work?
This commit is contained in:
parent
c4099cb690
commit
1cd8565fb3
@ -153,7 +153,6 @@ void TestGLCanvas::setData(std::vector<signed char> *data) {
|
|||||||
in[i][1] = (double) (*data)[i * 2 + 1] / 127.0f;
|
in[i][1] = (double) (*data)[i * 2 + 1] / 127.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fftw_execute(plan[0]);
|
fftw_execute(plan[0]);
|
||||||
fftw_execute(plan[1]);
|
fftw_execute(plan[1]);
|
||||||
|
|
||||||
@ -162,10 +161,14 @@ void TestGLCanvas::setData(std::vector<signed char> *data) {
|
|||||||
|
|
||||||
for (int j = 0; j < 2; j++) {
|
for (int j = 0; j < 2; j++) {
|
||||||
for (int i = 0, iMax = FFT_SIZE / 2; i < iMax; i++) {
|
for (int i = 0, iMax = FFT_SIZE / 2; i < iMax; i++) {
|
||||||
double a = out[j][i][0];
|
double a = out[j][j?i:((iMax-1)-i)][0];
|
||||||
double b = out[j][i][1];
|
double b = out[j][j?i:((iMax-1)-i)][1];
|
||||||
|
|
||||||
double c = sqrt(a * a + b * b);
|
double c = sqrt(a * a + b * b);
|
||||||
|
|
||||||
|
double x = out[j?0:1][j?((FFT_SIZE-1)-i):((FFT_SIZE/2)+i)][0];
|
||||||
|
double y = out[j?0:1][j?((FFT_SIZE-1)-i):((FFT_SIZE/2)+i)][1];
|
||||||
|
double z = sqrt(x * x + y * y);
|
||||||
|
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
fft_floor = fft_ceil = c;
|
fft_floor = fft_ceil = c;
|
||||||
} else if (i < FFT_SIZE - 1) {
|
} else if (i < FFT_SIZE - 1) {
|
||||||
@ -178,20 +181,10 @@ void TestGLCanvas::setData(std::vector<signed char> *data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!j) {
|
if (!j) {
|
||||||
result[((FFT_SIZE/2)-1) - i] = c;
|
result[i] = (c<z)?c:z;
|
||||||
} else {
|
} else {
|
||||||
result[(FFT_SIZE/2) + i] = c;
|
result[(FFT_SIZE/2) + i] = (c<z)?c:z;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
|
|
||||||
if (!j) {
|
|
||||||
result[(FFT_SIZE/2) + ((FFT_SIZE/2)-1) - i] = c;
|
|
||||||
} else {
|
|
||||||
result[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user