Ich versuche programmgesteuert eine Welle (Sinus oder Quadrat) mit einer kontinuierlich abnehmenden Frequenz zu erzeugen. Dazu multipliziere ich einfach die Startfrequenz mit einem abnehmenden Wert, der linear von 1 auf 0 geht, in Zwischenschritten über einen bestimmten Zeitraum. Ich war verwirrt zu sehen (und zu hören), dass genau zur Hälfte der Zeitspanne die Frequenz wieder anstieg. Ich habe den Frequenzwert überprüft, aber alles ist in Ordnung. Ich kann nur die erste "Hälfte" der Welle verwenden, aber es wäre großartig zu verstehen, was ich erlebe. Jede Hilfe geschätzt! Vielen Dank
7
Antworten:
Stellen Sie sicher, dass Ihre Frequenz keine Werte unter 0 oder über der Hälfte Ihrer Abtastrate erreicht.
Bitte posten Sie weitere Informationen / Code darüber, wie Sie Ihre Wellenform erzeugen! Wahrscheinlich machen Sie es nicht richtig.
Zum Beispiel, wenn Sie eine Sinuswelle mit einer zeitlich variierenden Frequenz erzeugen möchtenf(t) (zum Beispiel um eine Frequenzmodulation zu implementieren), erzeugt so etwas wie:
ist falsch, weil Ihre momentane Frequenz ist:
Und:
Außer in dem speziellen Fall, in demf(t) ist eine Konstante.
Der richtige Weg, um eine Sinuswelle mit zeitlich variierender Frequenz zu erzeugenf(t) ist also mit:
Beim Synthesizer-Sprechen akkumuliert das Register / die Variable die momentane Frequenz, um die zu bewerten∫t0f(τ)dτ Die Menge wird als Phasenakkumulator bezeichnet.
http://en.wikipedia.org/wiki/Frequency_modulation
http://en.wikipedia.org/wiki/Instantaneous_phase
quelle