In diesem Kapitel lernt ihr wie man die Spektral-Analyse richtig einsetzt
und dass ein autarker Comment auch rechnen kann.

Spektral-Analyse:

Eine Spektral-Analyse wird natürlich mit Hilfe der diskreten schnellen Fourier-Transformation (FFT)
durchgeführt.
Für die diskrete Fourier-Transformation sollte man sich folgende Formeln einprägen:

Bitte die Schaltung DocSamples/LC_Glied_SpectraAnalysis.circ öffnen:

Im ScopeDialog des Scope-Elements Out Spec stellen wir folgendes ein:

Im AnalysisSetting-Dialog stellen wir bei Dyna folgendes ein:

Eine genaue Spektral-Analyse erfordert eine konstante Zeit-Schrittweite (StepControl On=aus). Außerdem
müssen wir der Schaltung eine gewisse Einschwingzeit gönnen (Recording at Time=100ms).

Der SignalGenerator-Dialog muß so aussehen:

Die Signal-Funktion SpecRect wird ausgewählt. SpecRect ist eine sogenannte SignalOfSpectrum-Funktion.
Das heisst, man gibt hier die Parameter für ein Spektrum an, ToneCirc macht dann eine IFT, um daraus
die entsprechende periodische Zeit-Funktion zu ermitteln. Dabei ist nur der Betrag durch die Spec-Parameter
festgelegt, die Phase legt ToneCirc fest (siehe Tabelle).
Bedeutung der Parameter:

Effective Val Effektive-Wert über eine Signal-Periode
Lowest Freq untere Grenze des Rechteck-Spektrums
Highest Freq obere Grenze des Rechteck-Spektrums
Phase 0-Phase immer 0°, 1-Phase immer 90°, 2-Phase zufällig  (pro Frequenz)

Für den Frequenzbereich des Signals legen wir 0 bis 4kHz fest, für die Frequenz-Auflösung df=10Hz, für die Sample-Anzahl
N=10000. Die Sample-Anzahl muß so groß gewählt werden, um wegen der Genauigkeit die Zeit-Schrittweite klein zu halten.
Das ergibt dann für die Samplefrequenz und die Dauer des Signals:

Bitte darauf achten, dass fs  immer mehr als doppelt so groß sein muß wie die Highest-Frequenz (Nyquist-Kriterium).
Außerdem darf df nicht zu groß gewählt werden, da sonst das Spektrum nicht richtig erzeugt werden kann.
Bei Settings/Analyser Settings stellen wir für NumSamples N ein, bei TimeRange die Dauer des Signals (T).
Also, je größer wir TimeRange machen, desto feiner wird die Frequenzauflösung. Ein sehr schmales Filter z.Bsp. braucht
eine feine Frequenzauflösung, wobei die Signaldauer entsprechend erhöht werden muß (T > Einschwingzeit).

Den Parameter Phase setzen wir auf 2, um ein stochastisches Signal (Rauschen) zu erzeugen. Wählten wir 0 oder 1, 
erhielten wir ein definiertes Signal, das aber hohe Peekwerte aufweißt. Das Ergebniss wäre aber das selbige.

Nach Durchführung von Dyna erhalten wir folgende Ergebniss-Charts:

Out Oszi zeigt das gefilterte Signal, während Out Spec das Betrags-Spektrum des gefilterten Signals zeigt.
Der OutSpec-Graph ist gezoomt, die X-Achse reicht aber ingesamt bis 50kHz was der halben Abtastfreq. entspricht.

Der DynChart Sig1.E zeigt das Original-Spektrum des Signal-Generators:

Sicherlich ist euch aufgefallen, dass die Schaltung auch einen LSA-Analyser beinhaltet.
In den Settings ist nur die VoltTransfer-Funktion ausgewählt. Nach Ausführung der LSA öffnet das 
korrespondierende Bodeplot-Fenster:

Man erkennt die Ähnlichkeit der Kurve mit dem Spektrum von Out Spec, weil das Spektrum des gefilterten
Signals (Orig-Signal ist ein Rechteck-Spektrum) die Übertragungsfunktion repräsentiert.
Die LSA ist natürlich genauer und einfacher zu handhaben. Bei linearen analogen Schaltungen macht die
Dyna mit Spektral-Analyse also gar keinen Sinn. Ich habe aber um die Sache leichter zu erklären eben dieses Beispiel
genommen. Bei digitalen Schaltungen (zBsp. FIR/IIR-Filter, AD-Wandler usw.) für die es kein LSA-Modell
gibt, ist  Dyna mit Spektralanalyse die einzige Alternative, das Frequenzverhalten zu studieren.

Die LSA-Parameter  für die Analyse (Menue: Settings/Analysis Settings) sind folgendermaßen eingestellt:

 

Die Frequenz läuft logarithmisch von 10Hz bis 10kHz. Da wir für jede Dekade 1000 Schritte eingestellt
haben, beläuft sich die Gesamtschritzahl auf 3000 Fequenzschritte.

Für die LSA muß das Signalgenerator-Element Sig1 nicht herausgezogen werden, da der Innenwiderstand
automatisch bei LSA deaktiviert wird. Vorsicht ! Für externe Signalgenerator-Elemente gilt das aber nicht.

Wir hätten natürlich auch den Widerstand R1 weglassen können und dafür Rq des Analysers sowie Ri von Sig1 auf
10kOhm setzen können, das Ergebniss wäre das Selbe gewesen.


Rechnender Comment

Autarke Comments kann man auch dazu verwenden automatische Berechnungen durchzuführen und
Diese anzuzeigen. Der Text mit dem gelben Hintergrund ist ein solcher Comment.
Nach Klick der rechten Maustaste auf dieses Comment öffnet sich der Comment-Dialog:

Eine Zeile, die mit einem #-Zeichen beginnt, wird als Formel gewehrtet. Solch eine Zeile wird im Dokument
nicht dargestellt. Alle anderen Zeilen sind normale Text-Zeilen. Formeln dienen der Vorberechnung von Variablen, 
die dann in einer Text-Zeile eingesetzt werden können. Variable werden in eine Text-Zeile mittels Brackets (<>)
eingeschlossen und dienen als Platzhalter, in denen das Berechungs-Ergebniss eingesetzt wird.
In den Formel-Zeilen können TokenRefParameter-Symbole (L1.L), AnalysisSetting-Symbole (g_timerange) als auch
Variable (fr, Q) verwendet werden. 
In den Platzhaltern einer Text-Zeile können TokenRefParameter-Symbole, AnalysisSetting-Symbole, Variable
als auch ganze Formeln eingesetzt werden.

Folgende AnalysisSetting-Symbole stehen zur Verfügung:

Analysing Settings/TimeRange g_timerange
Analysing Settings/Num of Timesteps g_numtimesteps
Analysing Settings/Recording at Time g_recstarttime
g_timerange/g_numtimesteps g_timestep
Analysing Settings/Frequency Start g_freqstart
Analysing Settings/Frequency End g_freqend

g_timestep machen nur Sinn wenn die Schrittweiten-Steuerung abgeschaltet ist.

Einen Zeilen-Wechsel erzeugt man im Comment-Dialog mit der Tasten-Kombi Ctrl+Enter. Möchte man eine
Formel auch im Dokument zur Anzeige bringen, dann muß man Diese noch einmal ohne das #-Zeichen am
Anfang schreiben. Ein ;-Zeichen am Anfang einer Zeile bewirkt deren Auskommentierung (wird wirkungslos).
Ein "-Zeichen am Anfang einer Zeile führt dazu, dass alle Zeichen (auch <>)  1 zu 1 angezeigt werden. (für Pfeile etc.)
Hier die Liste der in Scripten verwendbaren Funktionen.

Zurück zur Hauptseite