Kontinuierliche und diskrete Systeme Analoge Signale existieren zu jedem Zeitpunkt. Um ein analoges (kontinuierliches) Signal zu erzeugen, verwendet man entweder eine rein kontinuierliche Quelle ( Signal Generator oder Constant ) oder eine allgemeine Quelle mit der Einstellung Sample Time = 0. Die meisten signalverarbeitenden Blöcke erben das Zeitverhalten von ihrem Eingangssignal, können also sowohl diskrete als auch kontinuierliche Signale verarbeiten. Die Blöcke der Teilbibliothek Continuous akzeptieren diskrete Eingangssignale, geben aber am Ausgang auf jeden Fall ein kontinuierliches Signal aus. Dass Simulink intern immer mit diskreten Zeiten arbeitet, erkennt man im folgenden Modell, wo eine Treppe mit den Werten 1 bis 5 nach der Zeit abgeleitet ( Derivative ) wird. Kontinuierliche Ableitung Die Ableitung an einer Sprungstelle hängt vom gewählten Zeitschritt ab. 1:5 Signal From Workspace du/dt Derivative Der Wert der Ableitung hängt vom beliebig gewählten Zeitschritt ab (Menü Simulation/Simulation Parameters/Max Step Size)
Weitere Hinweise: Die Quelle Signal From Workspace kann Variablen aus Matlab importieren, aber auch einen angegebenen Signalvektor ausgeben. Das kann beliebig viele Eingänge/Achsen erhalten. Mit Rechtsklick auf die Achsen kann man den Wertebereich einstellen. Ein Doppelklick an beliebiger Stelle im Modell öffnet dort ein Kommentarfeld. Das Feld kann mit beliebigem Font, Farben und Rand/Schatten formatiert werden. Auch Tex-Ausdrücke (z.b. x_i oder x^2 für x i bzw. x²) sind optional möglich. In den meisten Blöcken, die nur diskrete Signale verarbeiten, lässt sich die Abtastzeit angeben. Ist das Eingangssignal kontinuierlich, dann muss man einen Wert Sample time > 0 wählen. Bei diskreten Signalen kann die Abtastzeit mit Sample Time = -1 geerbt werden. Einige Blöcke wie Digital Filter oder Upsample akzeptieren nur diskrete Eingangssignale. Ein kontinuierliches Signal kann mit dem Zero-Order Hold in ein diskretes Signal gewandelt werden. Signal Generator (continuous) Zero-Order Hold (Ts = 0.05) 2 Upsample Upsample fügt 0 zwischen Werten ein
Vektorsignale Mehrere Signale kann man zu einem Bündel (Vektor) zusammenfassen mit dem Block Mux. Viele Blöcke können Signalvektoren verarbeiten. zeigt die verschiedenen Komponenten des Signalvektors in einem einzigen Diagramm. sin(t) 2 2 1 2 4 s Gain Integrator sin(1.1*t) (Anzeige der Signaldimension mit Menü Format/Signal Dimensions) Quellen oder signalverarbeitende Blöcke, die man mit Vektorargumenten parametriert, produzieren ebenfalls Vektorsignale. 2 2 4 Sine Wave Gain sin(t) num(s) s Transfer Fcn 2 Hinweis: Ein Vektorsignal wird mit dem Demux -Block wieder in seine Komponenten zerlegt.
Samples und Frames Der einzelne Abtastwert zu einem bestimmten Zeitpunkt heißt Sample. Im Normalfall wird in jedem Zeitpunkt von jedem Signal genau ein Sample verarbeitet. Das ist für die Simulation nicht günstig, denn beim Weiterreichen von Signalen zwischen Blöcken werden zusätzliche Informationen übertragen, so dass ein großer Overhead entsteht, wenn jeweils nur ein Sample übertragen wird. Besser ist es, mehrere Samples zu einem Frame zusammenzufassen, der dann in einem Stück verarbeitet und zum nächsten Block weitergeleitet wird (vgl. in Matlab: for-schleife gegenüber Vektoroperation, oder Hardware-Schnittstellen: blockweise Übertragung von Werten). Im Beispiel werden zwei Signale erzeugt (Block Signal From Workspace ) t 0 1 2 3 4 5 6 7 8 9 ch1 1 2 3 4 5 6 7 8 9 10 ch2 1 1 0 0 1 1 0 0 1 1 Bereits in der Quelle werden je 4 Samples zu einem Frame kombiniert. Daten werden nur noch zu jedem 4. Abtastzeitpunkt übertragen (t = 0, t = 4, t = 8; siehe Bild). t 0 4 8 ch1 {1,2,3,4} {5,6,7,8} {9,10,0,0} ch2 {1,1,0,0} {1,1,0,0} {1,1,0,0} Durch die Bildung eines Frames ändert sich also die Abtastrate (hier von 1 Hz auf 4 Hz).
Der Block Buffer sammelt einzelne Samples zu Frames zusammen. Die Abtastrate am Ausgang ist entsprechend kleiner. Buffer kann auch vorhandene Frames in neue Frames einteilen. Ein Vektorsignal (interpretiert als ein Bündel von unabhängigen Signalen) kann mit To Frame in einen Frame umgewandelt werden. In Hardware entspricht das einem Parallel-Seriell- Wandler. Magnitude FFT verarbeitet Frames als Eingangssignal (die Framegröße kann dann als FFT- Größe dienen) und liefert am Ausgang das Ergebnis der FFT als Vektorsignal. Mit To Frame wird daraus wieder ein einzelnes Signal, aber in Frames eingeteilt. Einige Blöcke wie z.b. das können nur einzelne Samples verarbeiten. Zum Umwandeln eines Frames in einzelne Samples gibt es den Unbuffer -Block. Umwandlung zwischen Samples, Frames und Vektoren [128x1] FFT 2 [128x1] To [128x1] Frame Sine Wave Buffer Ts = 1/128 64 samples -> 1 Frame Magnitude FFT Vektor 64 Signale Frame Status Conversion 64 samples -> 1 Frame Unbuffer samples Hinweis: Mit dem Menüpunkt Format/Sample Time Colors werden im Modell Blöcke und Signale mit gleicher Abtastrate farblich gleich gekennzeichnet. Die Framegröße wird mit Format/Signal Dimensions angezeigt.