Im Rekonstruieren Signal von Amplitude, Frequenz und Phase fft erhalten. Nachdem ich fft gemacht habe, wählte ich einige seiner Frequenzen aus und rekonstruierte das Zeitliniensignal aus diesen fft-Daten. Ich weiß, IFFT ist dafür, aber ich möchte nicht IFFT verwenden. Die Rekonstruktion scheint in Ordnung zu sein, aber es gibt einige Zeitverzögerungen zwischen zwei Signalen. Dieses Bild zeigt dieses Problem. Schwarz ist das ursprüngliche Signal und Rot ist das rekonstruierte. Signal von fft rekonstruieren
Wenn ich es richtig weiß, Amplitude-Frequenz-Bin t sqrt(real[t]*real[t] + imag[t]*imag[t]
und Phase ist atan2(imag[t], real[t])
. Also, ich habe Formel für eine Frequenz bin. Und ich habe diese regenerierten Wellen summiert. Soweit ich weiß, sollte dies intakte Signalanpassungen zum ursprünglichen Signal erzeugen. Aber es endet immer mit einer gewissen Verzögerung vom ursprünglichen Signal.
Ja, ich denke es ist Phase, aber das ist so einfach zu berechnen und es funktioniert richtig. Wenn es einen Fehler hat, würde das rekonstruierte Signal nicht zu seinem ursprünglichen Signal passen.
Dies ist der Code zum Generieren einer Kosinuswelle. Ich habe eine Kosinuswelle von sin (x + π/2) erzeugt.
std::vector<short> encodeSineWavePCM(
const double frequency,
const double amplitude,
const double offSetPhase)
{
const double pi = 3.1415926535897932384626;
const int N = 44100; // 1 sec length wave
std::vector<short> s(N);
const double wavelength = 1.0 * N/frequency;
const double unitlength = 2 * pi/wavelength;
for (int i = 0; i<N; i ++) {
double val = sin(offSetPhase + i * unitlength);
val *= amplitude;
s[i] = (short)val;
}
return s;
}
Was fehlt mir?
Sie müssen Ihre Frage nicht erneut posten, Sie sollten Ihre ursprüngliche Frage bearbeiten, um die Diskussion zu bewahren. –
"Ich weiß, IFFT ist dafür" - und es ist die _only_ Transformation, die Ihnen das Original zurückgibt. Aber warum die irrationale Abneigung gegen die IFFT? – MSalters
für Testzwecke. Das ist ein Tonsignal und ich versuche, aus den Hauptfrequenzen des Originalsignals einen Originalton zu machen. Muss es den gleichen Klang haben, wenn ich jede Frequenz gleichzeitig spiele? –