mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2024-11-26 05:38:39 -05: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;
|
||||
}
|
||||
|
||||
|
||||
fftw_execute(plan[0]);
|
||||
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 i = 0, iMax = FFT_SIZE / 2; i < iMax; i++) {
|
||||
double a = out[j][i][0];
|
||||
double b = out[j][i][1];
|
||||
|
||||
double a = out[j][j?i:((iMax-1)-i)][0];
|
||||
double b = out[j][j?i:((iMax-1)-i)][1];
|
||||
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) {
|
||||
fft_floor = fft_ceil = c;
|
||||
} else if (i < FFT_SIZE - 1) {
|
||||
@ -178,20 +181,10 @@ void TestGLCanvas::setData(std::vector<signed char> *data) {
|
||||
}
|
||||
|
||||
if (!j) {
|
||||
result[((FFT_SIZE/2)-1) - i] = c;
|
||||
result[i] = (c<z)?c:z;
|
||||
} 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…
Reference in New Issue
Block a user