kopia lustrzana https://github.com/rs1729/RS
mod: --dc update clean-up
rodzic
090ccb5f27
commit
49df867cc1
|
@ -165,31 +165,26 @@ static int getCorrDFT(dsp_t *dsp) {
|
||||||
if (dsp->sample_out < dsp->L) return -2;
|
if (dsp->sample_out < dsp->L) return -2;
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < dsp->K + dsp->L; i++) (dsp->DFT).xn[i] = sbuf[(pos+dsp->M -(dsp->K + dsp->L-1) + i) % dsp->M];
|
for (i = 0; i < dsp->K + dsp->L; i++) dsp->DFT.xn[i] = sbuf[(pos+dsp->M -(dsp->K + dsp->L-1) + i) % dsp->M];
|
||||||
while (i < dsp->DFT.N) (dsp->DFT).xn[i++] = 0.0;
|
while (i < dsp->DFT.N) dsp->DFT.xn[i++] = 0.0;
|
||||||
|
|
||||||
|
|
||||||
rdft(&dsp->DFT, dsp->DFT.xn, dsp->DFT.X);
|
rdft(&dsp->DFT, dsp->DFT.xn, dsp->DFT.X);
|
||||||
|
|
||||||
|
|
||||||
if (dsp->opt_dc) {
|
if (dsp->opt_dc) {
|
||||||
if (dsp->opt_iq >= 2 && !dsp->locked) {
|
|
||||||
for (i = 0; i < dsp->K + dsp->L; i++) (dsp->DFT).xn[i] = sbuf[(pos+dsp->M -(dsp->K + dsp->L-1) + i) % dsp->M];
|
|
||||||
while (i < dsp->DFT.N) (dsp->DFT).xn[i++] = 0.0;
|
|
||||||
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
//X[0] = 0; // nicht ueber gesamte Laenge ... M10
|
//X[0] = 0; // nicht ueber gesamte Laenge ... M10
|
||||||
//
|
//
|
||||||
// L < K ? // only last 2L samples (avoid M10 carrier offset)
|
// L < K ? // only last 2L samples (avoid M10 carrier offset)
|
||||||
double dc = 0.0;
|
double dc = 0.0;
|
||||||
for (i = dsp->K - dsp->L; i < dsp->K + dsp->L; i++) dc += (dsp->DFT).xn[i];
|
for (i = dsp->K - dsp->L; i < dsp->K + dsp->L; i++) dc += dsp->DFT.xn[i];
|
||||||
dc /= 2.0*(float)dsp->L;
|
dc /= 2.0*(float)dsp->L;
|
||||||
dsp->DFT.X[0] -= dsp->DFT.N * dc ;//* 0.95;
|
dsp->DFT.X[0] -= dsp->DFT.N * dc ;//* 0.95;
|
||||||
*/
|
*/
|
||||||
dsp->DFT.X[0] = 0;
|
dsp->DFT.X[0] = 0;
|
||||||
Nidft(&dsp->DFT, dsp->DFT.X, (dsp->DFT).cx);
|
Nidft(&dsp->DFT, dsp->DFT.X, dsp->DFT.cx);
|
||||||
for (i = 0; i < dsp->DFT.N; i++) (dsp->DFT).xn[i] = creal((dsp->DFT).cx[i])/(float)dsp->DFT.N;
|
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.xn[i] = creal(dsp->DFT.cx[i])/(float)dsp->DFT.N;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.Z[i] = dsp->DFT.X[i]*dsp->DFT.Fm[i];
|
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.Z[i] = dsp->DFT.X[i]*dsp->DFT.Fm[i];
|
||||||
|
@ -218,10 +213,10 @@ static int getCorrDFT(dsp_t *dsp) {
|
||||||
|
|
||||||
//xnorm = sqrt(dsp->qs[(mpos + 2*dsp->M) % dsp->M]); // Nvar = L
|
//xnorm = sqrt(dsp->qs[(mpos + 2*dsp->M) % dsp->M]); // Nvar = L
|
||||||
xnorm = 0.0;
|
xnorm = 0.0;
|
||||||
for (i = 0; i < dsp->L; i++) xnorm += (dsp->DFT).xn[mp-i]*(dsp->DFT).xn[mp-i];
|
for (i = 0; i < dsp->L; i++) xnorm += dsp->DFT.xn[mp-i]*dsp->DFT.xn[mp-i];
|
||||||
xnorm = sqrt(xnorm);
|
xnorm = sqrt(xnorm);
|
||||||
|
|
||||||
mx /= xnorm*(dsp->DFT).N;
|
mx /= xnorm*dsp->DFT.N;
|
||||||
|
|
||||||
dsp->mv = mx;
|
dsp->mv = mx;
|
||||||
dsp->mv_pos = mpos;
|
dsp->mv_pos = mpos;
|
||||||
|
@ -236,22 +231,13 @@ static int getCorrDFT(dsp_t *dsp) {
|
||||||
mx = 0.0f;
|
mx = 0.0f;
|
||||||
mpos = 0;
|
mpos = 0;
|
||||||
|
|
||||||
for (i = 0; i < dsp->K + dsp->L; i++) (dsp->DFT).xn[i] = dcbuf[(pos+dsp->M -(dsp->K + dsp->L-1) + i) % dsp->M];
|
for (i = 0; i < dsp->K + dsp->L; i++) dsp->DFT.xn[i] = dcbuf[(pos+dsp->M -(dsp->K + dsp->L-1) + i) % dsp->M];
|
||||||
while (i < dsp->DFT.N) (dsp->DFT).xn[i++] = 0.0;
|
while (i < dsp->DFT.N) dsp->DFT.xn[i++] = 0.0;
|
||||||
rdft(&dsp->DFT, dsp->DFT.xn, dsp->DFT.X);
|
rdft(&dsp->DFT, dsp->DFT.xn, dsp->DFT.X);
|
||||||
|
|
||||||
/*
|
|
||||||
//X[0] = 0; // nicht ueber gesamte Laenge ... M10
|
|
||||||
//
|
|
||||||
// L < K ? // only last 2L samples (avoid M10 carrier offset)
|
|
||||||
double dc = 0.0;
|
|
||||||
for (i = dsp->K - dsp->L; i < dsp->K + dsp->L; i++) dc += (dsp->DFT).xn[i];
|
|
||||||
dc /= 2.0*(float)dsp->L;
|
|
||||||
dsp->DFT.X[0] -= dsp->DFT.N * dc ;//* 0.95;
|
|
||||||
*/
|
|
||||||
dsp->DFT.X[0] = 0;
|
dsp->DFT.X[0] = 0;
|
||||||
Nidft(&dsp->DFT, dsp->DFT.X, (dsp->DFT).cx);
|
Nidft(&dsp->DFT, dsp->DFT.X, dsp->DFT.cx);
|
||||||
for (i = 0; i < dsp->DFT.N; i++) (dsp->DFT).xn[i] = creal((dsp->DFT).cx[i])/(float)dsp->DFT.N;
|
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.xn[i] = creal(dsp->DFT.cx[i])/(float)dsp->DFT.N;
|
||||||
|
|
||||||
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.Z[i] = dsp->DFT.X[i]*dsp->DFT.Fm[i];
|
for (i = 0; i < dsp->DFT.N; i++) dsp->DFT.Z[i] = dsp->DFT.X[i]*dsp->DFT.Fm[i];
|
||||||
|
|
||||||
|
@ -271,12 +257,11 @@ static int getCorrDFT(dsp_t *dsp) {
|
||||||
|
|
||||||
mpos = pos - (dsp->K + dsp->L-1) + mp; // t = L-1
|
mpos = pos - (dsp->K + dsp->L-1) + mp; // t = L-1
|
||||||
|
|
||||||
//xnorm = sqrt(dsp->qs[(mpos + 2*dsp->M) % dsp->M]); // Nvar = L
|
|
||||||
xnorm = 0.0;
|
xnorm = 0.0;
|
||||||
for (i = 0; i < dsp->L; i++) xnorm += (dsp->DFT).xn[mp-i]*(dsp->DFT).xn[mp-i];
|
for (i = 0; i < dsp->L; i++) xnorm += dsp->DFT.xn[mp-i]*dsp->DFT.xn[mp-i];
|
||||||
xnorm = sqrt(xnorm);
|
xnorm = sqrt(xnorm);
|
||||||
|
|
||||||
mx /= xnorm*(dsp->DFT).N;
|
mx /= xnorm*dsp->DFT.N;
|
||||||
|
|
||||||
|
|
||||||
dsp->mv2 = mx;
|
dsp->mv2 = mx;
|
||||||
|
@ -289,10 +274,11 @@ static int getCorrDFT(dsp_t *dsp) {
|
||||||
{
|
{
|
||||||
double dc = 0.0;
|
double dc = 0.0;
|
||||||
int mp_ofs = 0;
|
int mp_ofs = 0;
|
||||||
if (dsp->opt_iq >= 2) {
|
if (dsp->opt_iq >= 2 && dsp->mv2_pos == 0) {
|
||||||
mp_ofs = (dsp->lpFMtaps - (dsp->sps-1))/2;
|
mp_ofs = (dsp->lpFMtaps - (dsp->sps-1))/2;
|
||||||
}
|
}
|
||||||
dc = 0.0; // rs41 without preamble?
|
dc = 0.0; // rs41 without preamble?
|
||||||
|
// unbalanced header?
|
||||||
for (i = 0; i < dsp->L; i++) dc += dcbuf[(mp_ofs + mpos - i + dsp->M) % dsp->M];
|
for (i = 0; i < dsp->L; i++) dc += dcbuf[(mp_ofs + mpos - i + dsp->M) % dsp->M];
|
||||||
dc /= (float)dsp->L;
|
dc /= (float)dsp->L;
|
||||||
dsp->dc = dc;
|
dsp->dc = dc;
|
||||||
|
|
Ładowanie…
Reference in New Issue