44
Einführung in Scilab und Xcos für das Praktikum: Grundlagen der Elektronische Messtechnik Mahmoud Felk Betreuer : Dipl.-Ing. Sebastian Nowoisky Datum: 9. Oktober 2014 Technische Universität Berlin Fakultät IV - Elektrotechnik und Informatik Institut für Energie- und Automatisierungstechnik Fachgebiet Elektronische Mess- und Diagnosetechnik

Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

Einführung in Scilab und Xcosfür das Praktikum: Grundlagen der Elektronische Messtechnik

Mahmoud Felk

Betreuer : Dipl.-Ing. Sebastian Nowoisky

Datum: 9. Oktober 2014

Technische Universität BerlinFakultät IV - Elektrotechnik und Informatik

Institut für Energie- und AutomatisierungstechnikFachgebiet Elektronische Mess- und Diagnosetechnik

Page 2: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

Inhaltsverzeichnis Seite 2 / 44

Inhaltsverzeichnis

1 Einführung 31.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.1.1 Installationshinweise für Windows . . . . . . . . . . . . . . . . . . . . . . . 31.1.2 Installationshinweise für Linux (Ubuntu) . . . . . . . . . . . . . . . . . . . 41.1.3 Installationshinweise für MAC . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Scilab starten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Scilab-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 Scilab-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.5 Die MDT-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.6 Integration der MDT-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2 Vektoren und Matrizen 152.1 Definition von Matrizen in Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Operationen mit Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 Vordefinierte Funktionen und Variablen . . . . . . . . . . . . . . . . . . . . . . . . 172.4 Element(e) finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3 Graphische Darstellungen in Scilab 193.1 Einstieg in die graphischen Darstellung . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Fortgeschrittene graphische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . 21

4 Scilab als Programmiersprache 254.1 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2 Bedingte Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.3 Eigene Funktionen in Scilab implementieren . . . . . . . . . . . . . . . . . . . . . . 27

5 Statistik mit Scilab 285.1 Berechnung mit eigenen Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 285.2 Berechnung mit den vordefinierten Scilab-Funktionen . . . . . . . . . . . . . . . . . 30

6 Polynome und Übertragungsfunktion 326.1 Polynom erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.2 Übertragungsfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.3 Berechnung für einen Tiefpassfilter 1. Ordnung . . . . . . . . . . . . . . . . . . . . 34

7 Xcos 367.1 Arbeiten mit Xcos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.2 Steuerung von Xcos mit Scilab-Befehlen . . . . . . . . . . . . . . . . . . . . . . . . 37

8 Anhang 41Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Sachregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Page 3: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1 Einführung Seite 3 / 44

1 Einführung

Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut I.N.R.I.A (Institut National de Recherche en Informatique et Automatique) als Hilfefür Schüler, Studenten und Wissenschaftler. Scilab ist mittlerweile ein Open Source Projekt und wirdvielfach in Wissenschaft und Forschung eingesetzt. Im Rahmen des Praktikums „Grundlagen derelektronischen Messtechnik“ (MT1) wird Scilab für folgende Aufgaben verwendet:

• zur Lösungen linearer Gleichungssysteme.

• für die Statistik und Wahrscheinlichkeitsrechnung.

• zur Simulation von dynamischen Systemen.

• zur Auswertung und Verarbeitung von Messreihen.

• zur Visualisierung und graphischen Darstellung von Messwerten.

In dieser kleinen Einführung wird anhand einfacher Beispiele gezeigt, welche Befehle für die obengenannten Aufgaben zur Verfügung stehen und wie sie angewendet werden.

1.1 Installation

Im Praktikum werden mehrere speziell auf den Laborbetrieb ausgelegte Scilab-Funktionen verwen-det. Diese sind nicht standardmäßig in Scilab integriert und müssen von der MDT-Website herunterge-laden werden. Im folgenden nun eine Anleitung, wie man diese als Bibliothek in Scilab einbindet.Die nachfolgend verwendete Bezeichnung $SCI$ ist standardmäßig die Abkürzung für das Installa-tionsverzeichnis von Scilab.Bevor es losgehen kann, ist eine Installation der aktuellen Version von Scilab Version 5.5.1 notwendig.Der Downloadlink: http://www.scilab.org/download/5.5.1/Diese ist für die drei beschriebenen Betriebssysteme vorhanden und wird nachfolgend beschrieben.

• Beschreibung für Windows im Abschnitt 1.1.1

• Beschreibung für Linux (Ubuntu) im Abschnitt 1.1.2

• Beschreibung für MAC im Abschnitt 1.1.3

1.1.1 Installationshinweise für Windows

1. Die zip-Datei MDT_Funktionen.zip mit den Funktionen von der MDT-Website unter demStichpunkt Downloads herunterladen: http://www.mdt.tu-berlin.de/menue/lehre/mt1/praktikum/

Page 4: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.1 Installation Seite 4 / 44

2. Alle Dateien vorübergehend in ein Unterverzeichnis mdt entpacken, z.B.C:\DocumentsandSettings\user\Desktop\mdt

3. Scilab öffnen und die Library für die mdt-Funktionen über die Konsole mit dem Befehl

-->genlib("mdt","C:\Documents and Settings\ user\ Desktop\ mdt")

erzeugen.

4. Den mdt-Ordner in das Verzeichnis $SCI$\modules verschieben.

5. Damit die Library automatisch geladen wird, muss die Datei scilab.start im Verzeichnis $SCI$\etc\ mit einem Texteditor (z.B. Notepad++) geöffnet und angepasst werden. Hierzu Scilabschließen und die Zeile:

\uslmdt=lib("$SCI$\ modules\ mdt\ ");

an folgender Stelle ergänzen: 1 clearglobal();

2 mdt=lib("/SCI/modules/mdt/");

3 // Set stack size =============================

4 function setStackSize() Beispiel 1.1: scilab.start Anpassen (Windows)

6. Zum Testen→ mdt_ spectrum in die Konsole eingeben. Wenn die Bibliothek erfolgreich inte-griert wurde, wird eine kurze Beschreibung der Funktion ausgegeben.

Hinweise

Bei Windows 7 und Windows 8 wird in der Konsole eine Fehlermeldung ausgegeben, wenn manversucht die Library direkt im modules-Verzeichnis zu erstellen. Bei Schritt 5 kann es u.U. notwendigsein, die scilab.start-Datei in ein anderes Verzeichnis zu kopieren, diese dort zu verändern und danndie ursprüngliche zu überschreiben.

1.1.2 Installationshinweise für Linux (Ubuntu)

1. Die zip-Datei MDT_Funktionen.zip mit den Funktionen von der MDT-Website unter demStichpunkt Downloads herunterladen: http://www.mdt.tu-berlin.de/menue/lehre/mt1/praktikum/

2. Erstelle einen Ordner “mdt“ im Verzeichnis:/usr/share/scilab/modules Für diesen Schritt werden Root-Rechte benötigt. Tipp: gib imTerminal sudo mkdir /usr/share/scilab/modules/mdt ein, oder nutze sudo nautilus.

Page 5: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.1 Installation Seite 5 / 44

3. Kopiere die *.sci Dateien aus dem entpackten Ordner in den Ordner “mdt“. Auch für diesenArbeitsschritt werden Root-Rechte benötigt. Tipp: gib im Terminal sudo nautilus ein undnutze Nautilus mit Root-Rechten.

4. Scilab über ein Terminal mit Root-Rechten öffnen, mit dem Befehl sudo scilab.

5. In der Scilab-Console die Library für die mdt-Funktionen mit dem Befehl

genlib("mdt","/usr/share/scilab/modules/mdt")

erzeugen.

6. Damit die Library automatisch geladen wird, muss die Datei scilab.start im Verzeichnis/usr/share/scilab/etc/ mit einem Texteditor geöffnet und verändert werden. Hierzu dieZeile mdt=lib(/usr/share/scilab/modules/mdt/); an folgender Stelle ergänzen:

1 clearglobal();

2 mdt=lib("/usr/share/scilab/modules/mdt/");

3 // Set stack size =============================

4 function setStackSize() Beispiel 1.2: scilab.start Anpassen (Ubuntu)

Auch an diesem Punkt werden Root-Rechte benötigt, Tipp: sudo nautilus.

7. Zum Testen→mdt_spectrum in die Scilab-Console eingeben. Wenn die Bibliothek erfolgreichintegriert wurde, wird eine kurze Beschreibung der Funktion ausgegeben.

8. Scilab kann im Anschluss ohne Root-Rechte gestartet werden.

AnsprechpartnerBei Fragen und Problemen unterstützt per Email oder im persönlichen Gespräch während der Sprech-stunde:

Name: Christian StollE-Mail: [email protected]

1.1.3 Installationshinweise für MAC

1. Anzeigen der Paketinhalte von Scilab im Applications-Ordner, durch Rechtsklick aus Scilab.Kopiere dann den Ordner ’mdt’ in das Verzeichnis/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/modules/

2. Öffne Scilab und gib den Befehl 'edit SCIHOME/.scilab' in die Konsole ein. Die Dateimuss neu erstellt werden, weshalb die Rückfrage bejaht werden muss.

Page 6: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.2 Scilab starten Seite 6 / 44

3. Kopiere den Code aus dem nachfolgenden Codebeispiel in das Editorfenster und speichere. 1 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

2 modules/mdt/mdt_dataread.sci',-1);

3 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

4 modules/mdt/mdt_histogram.sci',-1);

5 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

6 modules/mdt/mdt_kubicspline.sci',-1);

7 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

8 modules/mdt/mdt_playsnd.sci',-1);

9 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

10 modules/mdt/mdt_regression.sci',-1);

11 exec('/Applications/scilab-5.4.1.app/Contents/MacOS/share/scilab/

12 modules/mdt/mdt_spectrum.sci',-1); Beispiel 1.3: Scilab Command Window (MAC)

Auf die Bezeichungen der verwendeten Pfade ist zu achten, hier sind ggf. Anpassungen fürjeden Befehl notwendig.

4. Scilab erneut starten und überprüfen ob alles funktioniert. Mit der Eingabe 'mdt' in der ScilabConsole und anschließenden drücken der Tab-Taste, sollten alle sechs Funktionen als Vervoll-ständigungsvorschläge angezeigt werden.

AnsprechpartnerBei Fragen und Problemen unterstützt per Email oder im persönlichen Gespräch während der Sprech-stunde:

Name: Joel Westerheide Florian StahlE-Mail: (joel.westerheide@mailbox) (florian.stahl@campus).tu-berlin.de

1.2 Scilab starten

Wenn Scilab gestartet wird, erscheint das Fenster in Abbildung 1.1. Dieses beinhaltet den Datei-Browser, die „SciNotes“, den Variablen-Browser, die Befehlshistorie und die Konsole. Welche dieserAnwendungen gerade ausgewählt ist, erkennt man an der blau eingefärbten Kopfleiste. Die Auswahleiner Anwendung erfolgt durch einfaches Klicken in den entsprechenden Sektor und führt dazu, dassdie entsprechende Menüleiste angezeigt wird. Das Kernelement von Scilab bildet hierbei die Kon-sole. Der Pfeil (-->) wird prompt genannt und zeigt an, dass Scilab bereit ist, Befehle entgegenzunehmen.

Page 7: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.2 Scilab starten Seite 7 / 44

Menüleiste

Kopfleiste

Abbildung 1.1: Startfenster Scilab

Von der Scilab Konsole „ prompt “ lassen sich sämtliche Scilab-Befehle eingegeben und ausführen.Damit sind sowohl einfache Berechnungen wie die Summe zweier Werte 15+ 20, als auch kom-pliziertere Berechnungen wie

√sin(π/3)+ cos(π/4) möglich. Das Ergebnis wird in der Standard-

variable ans gespeichert, sofern der Benutzer nicht selbst eine eigene Ergebnis-Variable definierthat. Scilab speichert die Einstellungen, Funktionen und Variablen in einer Variablen-Umgebung, dieWorkspace heißt. Die Scilab-Variablen und Funktionen können in Geschützte und Ungeschützte un-terteilt werden. Die Geschützten sind Variablen der Grundeinstellungen und -Funktionen. Diese wer-den von Scilab definiert und können nicht geändert werden. Die ungeschützten Variablen werdenvom Benutzer erstellt. Im Variablen-Browser werden standardmäßig nur die ungeschützten Variablenangezeigt. Diese können mit dem Befehl clear wieder gelöscht werden, wenn sie nicht mehr ge-braucht werden. Die folgenden Befehle sind für die Datenverwaltung sehr wichtig:

clc: Löscht die Konsole.

clear: Löscht die ungeschützte Variablen, mit dem Befehl clear x wird nur die Variable x gelöscht.

who: Zeigt alle Variablen an, (sowohl die geschützte als auch die ungeschützte).

who_user: Zeigt nur die vom Benutzer erstellten ungeschützten Variablen an.

stacksize: Der Befehl stacksize hat zwei Aufgaben.

Page 8: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.2 Scilab starten Seite 8 / 44

1 -->stacksize

2 ans =

34 5000000. 7950.

56 -->stacksize(15000000);

78 -->stacksize

9 ans =

1011 15000000. 7950.

12 --->

• Ohne Argument liefert sie den fürScilab reservierten Speicher und diemaximale Anzahl definierbare Vari-ablen.

• Mit einem Wert n als Argument setztsie den für Scilab reservierten Speicherauf den Wert n.

disp: Zeigt die Variable in der Konsole an.

pwd: Zeigt das aktuelle Verzeichnis an.

chdir(pfad): Wechselt das Verzeichnis in den angegebenen Pfad .

save: Wenn man Scilab verlässt, werden alle vom Benutzer erstellten Variablen gelöscht. Falls diesespäter wieder gebraucht werden, können sie in einer binären Datei „Dateiname“ mit dem Be-fehl save (Dateiname,x1,x2,...); gespeichert werden. Dabei ist „Dateiname“ ein Kettenzeichen.

load: Die mit save (Dateiname,x1,x2,..); gespeicherten Variablen können wieder mit der Funktionload (Dateiname) in den Workspace hochgeladen werden.

In Beispiel 1.4 werden zwei Werte mit den Variablennamen x und y erstellt, und ihre Summe inxy gebildet, dann werden die drei Variablen in der Datei „sumvonXundY.dat“ mit dem Befehl save

() gespeichert und anschließend der Workspace gelöscht. Die Variablen x, y,xy werden später imBeispiel 1.5 mit der Funktion load („sumvonXundY.dat“) in den Workspace hochgeladen.

Page 9: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.3 Scilab-Editor Seite 9 / 44

1 -->who_user

2 Benutzervariablen:

34 WSCI

56 Verwende 16 aus 690699 Elementen

78 -->x=4; y=17; xy=x+y; //Im Gegensatz zum

Komma unterdrückt das Semikolon die

Ausgabe von Ergebnissen einer Berechnung

auf den Bildschirm

910 -->who_user

11 Benutzervariablen:

1213 xy y x WSCI

1415 Verwende 25 aus 690693 Elementen

1617 -->save("sumvonXundY.dat",x,y,xy);

18 -->clear; Beispiel 1.4: Variablen erstellen und in eine Datei

Speichern

1 -->who_user

2 Benutzervariablen:

34 WSCI

56 Verwende 16 aus 690699 Elementen

7 -->load("sumvonXundY.dat")

89 -->who_user

10 Benutzervariablen:

1112 xy y x WSCI

1314 Verwende 25 aus 690693 Elementen

Beispiel 1.5: Variablen aus einer Datei in den WShochladen

1.3 Scilab-Editor

Es ist nicht sinnvoll permanent in der Konsole zu arbeiten, in der jeder Befehl manuell eingetragenwird. Oftmals möchte man mit einem Skript oder einer eigenen Funktion die automatisierte Abfolgevon Befehlen zur Lösung eines gestellten Problems erreichen. Beide Varianten bietet Scilab demBenutzer an. Der Scilab-Editor heißt SciNotes. Ein Skript kann sowohl in den SciNotes als auch ineinem anderen Texteditor z.B. Notepad++ erstellt werden. Sollte SciNotes nicht automatisch geöffnetwerden, so kann es in der Menüleiste der Konsole unter „Anwendungen > SciNotes“ im Menü oderdurch die Eingabe des Befehls scinotes geöffnet werden. Alternativ kann auch das Icon „ScilabEditor“ siehe Abbildung 1.2 gedrückt werden, um die Applikation zu starten.

Abbildung 1.2: Weitere Möglichkeit der Scilab-Editor zu starten

Das fertige Skript lässt sich dieses entweder durch Anklicken der Taste oben im Editor mit dem

Page 10: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.4 Scilab-Hilfe Seite 10 / 44

Dreiecksymbol (siehe Abbildung 1.3), oder durch die Eingabe des Befehls exec („name“) in derKonsole durchführen.

SciNotes

Abbildung 1.3: Scilab-Editor

1.4 Scilab-Hilfe

Das Scilab-Paket enthält eine ausführliche Hilfe. Sie wird in einem unabhängigen Fenster gezeigt.Durch die Angabe des Befehls help oder durch Drücken der „F1“- Taste öffnet sich der „Hilfe-Browser“und zeigt die Hauptseite der Hilfe an. (siehe Abbildung 1.4). Das Suchfeld wird erreicht, indem dasLupensymbol angeklickt wird. Dort wird der Suchbegriff eingegeben.Eine weitere Möglichkeit nach einer Funktion in der Hilfe zu suchen:

• Eingabe der Schlüsselwort help gefolgt vom Suchbegriff.

• Eingabe der Funktion apropos („Funktion-Name“) mit dem Suchbegriff als Argument.

1.5 Die MDT-Funktionen

Am Fachgebiet für Elektrische Mess- und Diagnosetechnik werden im Praktikum „Grundlagen derelektronischen Messtechnik“ verschiedene eigens entwickelte Funktionen verwendet. Das ist Notwendig,um die Messdatenanalyse und Aufgabenbearbeitung zu unterstützen. Im Folgenden finden sie eineHilfe zu den Übergabeparametern der Verschiedene MDT-Funktionen.Die Funktion:

Page 11: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.5 Die MDT-Funktionen Seite 11 / 44

Abbildung 1.4: Scilab Hilfe-Fenster

mdt_dataread

[data]= mdt_dataread (sr,amp,tm,ch,nc,bits,out) liest die Messwerte des Analog/Digital-Wandlers„ni6009“ aus. Die Funktion erwartet sechs Argumente und ein zusätzliches optionales Argument:

Argumentesr : Die gewünschte Abtastrate in Hz.amp : Der Messbereich in Volt, wobei (0.5, 0.625, 1, 1.25, 2, 2.5, 5, 2.5, 10) die zuläs-

sige Werte sind.tm : Die Aufnahmedauer in Millisekunden.ch : Die unterste Kanalnummer.nc : Die Anzahl der verwendete Kanäle.bits : Die gewünschte Auflösung im Bit (bis 14-Bit).out : Das gewünschte Format der Rückgabewerte, 0 als digitaler Code, 1 in Volt, wobei

1 Standard ist.

Rückgabewertdata : Ist eine (n x m) Matrix, in der die gemessenen Daten gespeichert sind, wobei

n die Anzahl der verwendete Kanäle ist und m die Anzahl der aufgenommenMesswerte des jeweiligen Kanals ist. Die Länge der Matrix (m) berechnet sichmit m=sr · tm ·103.

Die Messwerte „data“ werden als dezimale Zahl ausgegeben, die der binären Wertigkeit der Analog/Digital- Wandlerkarte [20, · · · ,2bits−1] entspricht. Sie müssen mit der Formel 1.1 in Spannungswerte

Page 12: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.5 Die MDT-Funktionen Seite 12 / 44

zwischen [-amp, +amp] Volt umgewandelt werden.

datavolt =−amp+data · amp− (−amp)2bits−1

(1.1)

Die Funktion mdt_dataread gibt die Messwerte Standardmäßig in Volt. Sollen die Werte binärausgegeben werden, dann sollte man das siebente Argument out auf 0 setzten.

mdt_regression

[Para]= mdt_regression (x,y) berechnet die Regressionskoeffizienten eines Polynoms n.ter Ord-nung von zwei Datensätzen x und y. Die Funktion erwartet drei Argumente:

Argumentex : Die Messdaten mit der Isttrajektoriey : Der Solltrajektorien : Die gewünschte Ordnung des PolynomsRückgabewert

Para : Die Parameter des Polynoms

Zusätzlich zu dem Rückgabewert „Para“ wird eine graphische Darstellung der Messwerte und der mitder approximierte Verlauf ausgegeben.

mdt_kubicspline

mdt_kubicspline (x,y) berechnet einen kubischen Spline und stellt ihn graphisch dar. Die Funktionerwartet zwei Argumente:

Argumentex : Die Messdaten mit der Isttrajektoriey : Der SolltrajektorieRückgabewert

- : Keine

Diese Funktion gibt ein graphisches Fenster mit der Spline Interpolation der Messdaten aus. Mehr zurDarstellung in graphischen Fenstern in Abschnitt 3

mdt_histogram

[N, codes]= mdt_histogram

berechnet die Parameter eines Analog/ Digital- Wandlers für einen Histogramm-Test bei Entfer-nung der Randcodes.

Die Funktion erwartet zwei Argumente für die Eingabe.

Page 13: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.6 Integration der MDT-Funktionen Seite 13 / 44

Argumentedata : Das Zeitsignal (Zeilenvektor)bits : Die Bitanzahl des AD-WandlersRückgabewert

N : Die beobachtete Anzahl pro Stufe des Analog/ Digital- Wandlerscode : Die Codes von 1 - 214−2

mdt_spectrum

mdt_spectrum () stellt für ein gegebenes Zeitsignal das zugehörige Amplitudenspektrum graphischdar. Die Funktion erwartet zwei Argumente.

Argumentedata : Das Zeitsignal (Zeilenvektor)bits : Die Bitanzahl des AD-WandlersRückgabewert

- : Keine

mdt_playsnd

mdt_playsnd gibt ein gegebenes Signal akustisch auf der Soundkarte aus. Die Funktion erwartetzwei Argumente:

Argumentedata : Das Zeitsignal (Zeilenvektor)bits : Die Bitanzahl des AD-WandlersRückgabewert

- : Keine

1.6 Integration der MDT-Funktionen

Im Folgenden wird gezeigt, wie eine Scilab Funktion aufgerufen wird, ohne sie jedes Mal per Handladen zu müssen.

1. Die zip-Datei „MDT_Funktionen.zip“ von der MDT-Webseite herunterladen:

http://www.mdt.tu-berlin.de/menue/lehre/mt1/praktikum/

2. Alle Dateien in ein Unterverzeichnis „mdt“ (z.B. "C:\mdt") entpacken.

3. Scilab öffnen und die Library für die mdt-Funktionen mit folgendem Befehl erzeugen1:

1als zweites Eingabeargument muss der Pfad aus dem vorigen Schritt verwendet werden

Page 14: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

1.6 Integration der MDT-Funktionen Seite 14 / 44

--> genlib("mdt","C:/mdt")

4. Den mdt-Ordner in den „modules“-Ordner im Scilabinstallationsverzeichnis2 verschieben:

SCI\modules

5. Damit die Library automatisch geladen wird, muss die Datei scilab.start im VerzeichnisSCI\etc\ mit einem Texteditor geöffnet und verändert werden. Hierzu Scilab schließen unddie Zeile:

mdt=lib("SCI\modules\mdt\");

an folgender Stelle ergänzen:

clearglobal();

mdt=lib("SCI\modules\mdt\");

// Set stack size ===================================================

function setStackSize()

6. Zum Testen -->mdt_spectrum in die Konsole eingeben. Wenn die Bibliothek erfolgreichintegriert wurde, wird eine kurze Beschreibung der Funktion ausgegeben.

Hinweis: Diese Anleitung funktioniert bei den Betriebssystemen Windows 7 und Windows 8. FürLinux und MAC werden ggf. Anleitungen nachgereicht.

2standardmäßig mit SCI abgekürzt

Page 15: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

2 Vektoren und Matrizen Seite 15 / 44

2 Vektoren und Matrizen

Die grundlegende Datenstruktur von Scilab ist die Matrix, dabei zählen Vektoren und Skalare zu denspeziellen Matrizen.

2.1 Denition von Matrizen in Scilab

Die einfachste Weise in Scilab ein Matrix einzugeben ist das Eintippen ihrer Elemente. Dabei sind dieElemente einer Zeile durch Kommas oder Leerzeichen zu trennen und die Zeile durch ein Semikolon.Die Elemente sind in eckige Klammern einzugeben siehe Beispiel 2.1.

1 M = [1 2 3 4; 23,45,67,68; 10 20 20 90];2 disp(M);// Zeigt die Matrix M in der Konsole an

Beispiel 2.1: Eine Matrix definieren

Matrizen können aus Vektoren zusammengesetzt werden. Man kann also mehrere Vektoren definierenund sie in einer Matrix zusammenfassen, siehe Beispiel 2.2.

1 V1 = [1 7 13 19 ];// Elemente Eintippen mit Leerzeichen als delimiter//2 V1sp = [1; 7; 13; 19];// Elemente Eintippen mit (;) delimiter3 V2 = [0:5:15];// Mit Inkrementierungsschritt4 V3 = linspace(10,40,4);// Mit Anzahl der Elemente5 V4 = logspace(1,4,4);// Logarithmische Form6 N = [V1;V2;V3;V4]

Beispiel 2.2: Matrix aus Vektoren

Das Beispiel 2.2 zeigt ebenfalls verschiedene Möglichkeiten auf, einen Vektor zu erzeugen.

1. Durch einzelne Elemente innerhalb zwei eckiger Klammern. Wenn als Trennzeichen Kommataoder Leerzeichen eingegeben sind, dann wird einen Zeilenvektor erzeugt. Wenn stattdessen einSemikolon als Trennzeichen eingegeben wird, dann wird ein Spaltenvektor erzeugt.

2. Mit dem Doppelpunkt-Zeichen (:)3 [x_a:dx:x_e], wobei x_a das erste Element, x_e des letzteElement und dx den Inkrementierungsschritt darstellt.

3. Mit der Funktion linspace („x_a“,“x_e“, “n“) wird ein Vektor erzeugt mit „n“ Elementen undder gleichen linearen Schrittweite zwischen dem Wert x_a und x_e.

4. Mit der Funktion logspace (a,b,n) wird ein Vektor von „n“ Elementen mit einer logarithmis-chen Schrittweite zwischen dem Wert 10(a) und 10(b) erzeugt.

Man kann außerdem oft gebrauchte elementare Matrizen mit Funktionen erzeugen wie etwa eine:3bedeutet in Scilab „bis“

Page 16: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

2.2 Operationen mit Matrizen Seite 16 / 44

Einheitsmatrix: Mit der Funktion eye (n,m) wird eine Einheitsmatrix der Dimension (n x m)

erzeugt.

Diagonalmatrix: Mit der Funktion diag (b) wird eine Diagonalmatrix erzeugt, dabei sind dieElemente der Diagonale die Elemente des Spaltenvektors b.

Nullmatrix: Mit der Funktion zeros (n,m) wird eine mit Nullen besetzte Matrix der Dimension(n x m) erzeugt.

Einsmatrix: Mit der Funktion ones (n,m) wird eine mit Einsen besetzte Matrix der Dimension(n x m) erzeugt.

Zufallszahlen-Matrix: Mit der Funktion rand (n,m) wird eine mit Zufallszahlen zwischen 0 und1 besetzte Matrix der Dimension (n x m) erzeugt.

1 A = eye(4,3);//Einheitsmatrix2 B = zeros(3,5);//Nullmatrix3 C = ones(5,5);//Einsmatrix4 E = diag(V1);//Diagonalmatrix5 R = rand(3,3)// Zufallszahlenmatrix

Beispiel 2.3: Matrix generieren

Mehr dazu findet man in der Scilab Hilfe unter „Scilab help » Elementary Functions » Elementarymatrices“.Vektoren können auch von einer Text-, Binär- oder Excel-Datei eingelesen werden. Mehr dazu in derScilab Hilfe „Scilab help » Input/Output functions “ für Textdateien und „Scilab help » Spreadsheet“für csv-Dateien und Excel-Dateien.

2.2 Operationen mit Matrizen

Die mathematische Regeln der Algebra gelten auch für die Berechnung von Matrizen mit Scilab,anderenfalls gibt es ein Fehlermeldung.

+ : Addition - : Substraktion* : Multiplikation x/y : Division x

y

x\ y : Division yx ./ : Elementweise Devision

.* : Elementweise Multiplikation .ˆ : Elementweise Potenz

Addition: Die Summe zweier Matrizen wird gebildet, wie im Beispiel 2.4 gezeigt wird. Dabeimüssen beide Matrizen die gleichen Dimensionen haben. Die Addition einer Matrix mit einemSkalar ist ebenfalls im Beispiel 2.4 gegeben.

Page 17: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

2.3 Vordefinierte Funktionen und Variablen Seite 17 / 44

Matrixprodukt: Das Produkt zweier Matrizen wird gebildet, wie in Beispiel 2.4 gezeigt wird.Dabei muss (n) die Anzahl der Zeilen von A gleich (m) die Anzahl der Spalten von B sein. DasErgebnis ist ein Matrix der Dimension (n x m)

Dimension: Die Dimension einer Matrix A wird mit der Funktion [r,c]= size (A) ermittelt, dabeiist (r) die Anzahl der Zeilen und (c) die Anzahl der Spalten.

Länge: Die Länge einer Matrix A wird mit der Funktion l= length (A), dabei ist ((l) die Anzahlaller Elemente der Matrix A, d.h. das Produkt aus Anzahl von Zeilen und Anzahl von Spalten.

Transponierte: Die Transponierte einer Matrix lässt sich einfach mit ein Apostroph (') berechnen.

Invertieren: Eine quadratische Matrix lässt sich mit dem Befehl inv (C) invertieren.

Determinante: Die Determinante einer Matrix C lässt sich mit dem Befehl det (C) ermitteln.

Elementweise Operationen: Bei elementweisen Matrixoperationen werden die einzelnen Elementeder Matrix A mit den Elementen von Matrix B multipliziert oder potenziert. Hier müssen diebeiden Matrizen die gleiche Dimension haben.

1 M = [M; 23 33 45 89];// Fuegt eine Zeile M hinzu2 MM = M + N;// Addition zweier Matrizen3 SM = 5 + M;// Addition mit einem Skalar4 AB = A * B;// Multiplikation5 invA = inv(M);//Invertierte6 detA = det(C);// Determinant7 EM = M .* N;// Elemnetweise Multiplikation8 EP = M .^ N;// Elementweise Potenzieren

Beispiel 2.4: Matrixoperationen

2.3 Vordenierte Funktionen und Variablen

Die folgende Tabelle zeigt die elementaren in Scilab bereits implementierten Funktionen an.

Funktionen

sum prod length size max min sqrt mean sin asin cos acos

tan atan sinh asinh cosh acosh tanh atanh exp log log10 log2

Variablen

%f od. %F : Falsche Aussage %t od. %T : Wahre Aussage true

%pi : π=3.1415927 %eps : Kleinste Zahl 2,2202 e−16

%i : Imaginäre Zahl√

1 %e : Euler'sche Zahl exp(1)%inf : Unendlich ∞ %nan : Keine Zahl (not a number)

Page 18: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

2.4 Element(e) finden Seite 18 / 44

2.4 Element(e) nden

Bei manchen Berechnungen ist es notwendig Teile eines Vektors isoliert zu betrachten bzw. einesTeilvektor zu erstellen. Hierbei können zwei Fälle unterschieden werden - entweder sind die Indizesoder die Werte der gesuchten Elemente bekannt. In Beispiel 2.5 ist für den Fall bekannter Indizesein Beispiel gegeben. Die gesuchten Elemente können durch einen Indexvektor in runden Klammernhinter dem ursprünglichen Vektor ausgeschnitten werden.

1 V = linspace(10,200,1000);//Vektor von 1000 Elemente2 ind = [100:1:250];// Vektor aller Indexe3 U = V(ind);// oder einfach so V(100:250);

Beispiel 2.5: Bereich isolieren

Sind die Werte der relevanten Elemente eines Vektors bekannt, so hilft der find -Befehl weiter.Die find -Funktion speichert die Indizes aller Elemente, die eine bestimmte Bedingung erfüllen. InBeispiel 2.6 ist dargestellt, wie alle negativen Elemente einer Sinusfunktion extrahiert werden können.Zuerst wird das Sinussignal f erzeugt. In die ind-Variable werden nun die Indizes aller Elemente vonf gespeichert, die kleiner als 0 sind. In die Variable g werden nun alle entsprechenden Elemente vonf gespeichert.

1 x = linspace(-%pi,%pi,100);// Elemente der x-Achse2 f = sin(x);// Berechnet die Sinusfunktion3 ind = find(f<0);// Sucht die Indexe der negativen Elemente4 g = f(ind);// Kopiert die negativen Elemente

Beispiel 2.6: Die find-Funktion

Page 19: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3 Graphische Darstellungen in Scilab Seite 19 / 44

3 Graphische Darstellungen in Scilab

Scilab hat eine Reihe von Befehlen zur Darstellung und Visualisierung von Diagrammen verschieden-er Art, wie Signalverläufe, Ortskurven, Balkendiagramme usw. In dieser Einleitung werden im Ab-schnitt 3.1 die Grundbefehle für einfache graphische Darstellungen erläutert. Abschnitt 3.2 zeigt,wie die Einstellungen eines graphischen Fensters nach eigenen Wünschen angepasst werden können.

3.1 Einstieg in die graphischen Darstellung

Der Befehl plot (X,Y) ist die einfachste Möglichkeit zwei Vektoren gleicher Dimension gegeneinan-der aufzutragen. Der Aufruf dieses Befehls öffnet ein graphisches Fenster, dann werden die Elementedes Vektors X auf der x-Achse und die Elemente des Vektors Y auf der y-Achse aufgetragen undschließlich wird die Kurve gezeichnet. Für die Achsenbeschriftung, die Legende, den Titel des Dia-gramms und das Gitter sind weitere Befehle notwendig. Beispiel 3.1 stellt die Sinusfunktion zwis-chen [−π,π] graphisch dar und zeigt zusätzlich die Achsen-Beschriftung, den Titel, die Legende undein Gitter an.

12 plot(x,f);// Zeichnet das Graph3 title("Sinusfunktion ueber den

Winkel");//gibt den Title aus4 xlabel("Winkel in Rad");//gibt den

X-Achse Beschriftung aus5 ylabel("Amplitude");//gibt den

Y-Achse Beschriftung aus6 legend("Sinus",pos = 2);//gibt die

Legende aus7 xgrid(1);// Zeichnet ein Gitter

Beispiel 3.1: Die plot-Funktion

Sinus

-1.0

-0.8

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

0.8

1.0

-4 -3 -2 -1 0 1 2 3 4

Sinusfunktion ueber den Winkel

Winkel in Rad

Am

plitu

de

Abbildung 3.1: Die plot-Funktion

Messdaten oder Signal-Verläufe lassen sich besser vergleichen, wenn diese im selben Diagrammaufgetragen werden. Scilab ermöglicht es, mehrere Signale in einem Fenster darzustellen, selbstwenn die Anzahl der Elemente der jeweiligen Signale nicht gleich ist. Im Beispiel 3.2 sind zweiverschiedene Signalverläufe in einem Plot dargestellt. Die Funktionswerte der Sinusfunktion werdendurch den Vektor f repräsentiert. Die negativen Funktionswerte sind im Vektor g enthalten und durchSternchen dargestellt. Zuerst werden die Indizes der negativen Werte von der Sinusfunktion mit derfind() Funktion gesucht und in den Vektor x2 kopiert. Anschließend werden beide Signalverläufemit der Funktion plot() in einem Fenster aufgetragen.Die Position der Legende im Graphen lässt sich mit dem Parameter pos=x einstellen, wobei x =

Page 20: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3.1 Einstieg in die graphischen Darstellung Seite 20 / 44

1 · · ·5 annehmen kann. Die Funktion xgrid (n) stellt ein gestricheltes Gitter in dem Plot dar,standardmäßig wird ein dünne schwarz gestrichelte Linie verwendet. Mit einem optionalen Param-eter kann die Farbe des Gitters festgelegt werden, dieser Parameter ist ein Integerwert zwischenn = 1 · · ·14. Die Farbe und der Linienstil des Signals werden als Argument in Kettenzeichen derFunktion mitgegeben. Mehr zum Stil und Farben der Signale ist in der Scilab Hilfe unter: „Scilab help> Graphics > 2d_plot > LineSpec“ erklärt.

1 // Ueberlagerte Darstellung2 set(scf(),"figure_name","Negative_Werte");3 x2 = x(ind);// Winkel-Werte fuer die

negativen Sinus-Werte4 plot(x,f);// Erste Kurve5 plot(x2,g,'k*');// Zweite Kurve in

Sternchen-Darstellung6 xtitle("Sinusfunktion ueber den

Winkel", "Winkel in [°]","Amplitude");

7 legend("Sinus","Negative Werte",pos= 4);//gibt die Legende aus

8 xgrid(5);// Zeichnet ein Gitter (rot) Beispiel 3.2: Überlagerte Darstellung

SinusNegative Werte

-1.0

-0.8

-0.6

-0.4

-0.2

0.0

0.2

0.4

0.6

0.8

1.0

-4 -3 -2 -1 0 1 2 3 4

Sinusfunktion ueber den Winkel

Winkel in [°]

Am

plitu

de

Abbildung 3.2: Überlagerte Darstellung

Die Funktion plot (x,y) hat nur eingeschränkte Einstellungsmöglichkeiten und ist deshalb besserzur Darstellung von kleineren Vektoren geeignet. Für größere Vektoren jedoch ist der Befehl plot2d

oder die Varianten plot2d1 , plot2d2 , plot2d3 und plot2d4 besser geeignet. Über die op-tionalen Argumente des Befehls plot2d lassen sich viele Einstellungen der graphischen Fensterfestlegen. In der Scilab-Hilfe gibt es eine ausführliche Erklärung für diesen Befehl. In dieser Ein-führung werden lediglich die wichtigsten Einstellungen erläutert. Beispiel 3.3 zeigt, wie ein odermehrere Signale gleicher Dimension mit den vier Varianten des plot2d -Befehls dargestellt wer-den. Dabei wird gezeigt, wie mehrere Diagramme in einem graphischen Scilab-Fenster mit Hilfe dersubplot -Funktion dargestellt werden. Das ist besonders nützlich um übergreifende Zusammenhängeinnerhalb eines Fensters darzustellen.

scf(): Öffnet ein graphisches Darstellungs-Fenster.

subplot(n,m,p): Diese Funktion teilt das graphische Darstellungs-Fenster in (n x m) Bereiche, undaktiviert den Bereich p für eine graphische Darstellung eines Signals mit dem Befehl plot ()oder plot2d ().

xtitle(T,X,Y): Diese Funktion zeigt den Titel oben mittig , die X-Achsen Beschriftung unten mittigund die Y-Achsen Beschriftung links mittig an.

plot2d1(): Diese Funktion ist ähnlich der plot2d ()-Funktion und zeichnet das Signal mit durchge-zogenen Linie, sofern an der Standardeinstellungen nichts geändert wird.

Page 21: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3.2 Fortgeschrittene graphische Darstellung Seite 21 / 44

1 x = linspace(-%pi,%pi,20);// elemente der x-Achse2 f = sin(x);// Berechnet die Sinusfunktion3 scf();set(gcf(),"figure_name","plot2dx")4 set(gda(),"font_size",2);// Setzt die Schriftgroesse auf 25 subplot(221)// Oben links6 plot2d1(x',f',axesflag = 5);7 xtitle("sinus mit plot2d1","","")8 subplot(222)//Oben rechts9 plot2d2(x',[f' cos(x)'],axesflag = 2,leg = "sin@cos");

10 xtitle("sinus mit plot2d2","$\textWinkel \varphi$")11 subplot(223)//Unten links12 plot2d3(x,f);13 xtitle("Sinus mit dem plot2d3-Befehl","$\textWinkel \varphi$","Amplitude")14 subplot(224)//Unten rechts15 plot2d4(x',[f' cos(x)'],[2 5]);16 xtitle("sinus mit plot2d4","$\textWinkel \varphi$","Amplitude")

Beispiel 3.3: Die plot2dx-Befehle

plot2d2(): Diese Funktion zeichnet das Signal Stufenförmig oder in waagerechten Strichen.

plot2d3(): Diese Funktion zeichnet die Stützpunkte in senkrechte Striche.

plot2d4(): Diese Funktion zeichnet das Signal in einer Pfeil-Darstellung.

leg : Ist ein Argument der Funktionen plot2dx welches die Legende darstellt und direkt im Anschlussder Funktion mitgegeben wird.

axesag : Ist ein Argument der Funktionen plot2dx und gibt an, wie die Achsen dargestellt werdensollen. Dabei nimmt der Parameter Werte zwischen 0, · · · ,5 und 9 an

Das Ergebnis des Skriptes aus Beispiel 3.3 ist in Abbildung 3.3 dargestellt.

3.2 Fortgeschrittene graphische Darstellung

Das Ergebnis des Plots muss manchmal angepasst werden. Scilab bietet an dieser Stelle eine gewisseFlexibilität an, und ermöglicht dem Benutzer einen allgemeinen Zugriff auf die gesamte Darstel-lung des Plots. Dabei ist zwischen den Achsen- und Fenster-Eigenschaften zu unterscheiden. DieEigenschaften der Achsen sind die der Darstellung des Signals, der Achsen, der Beschriftungen, derLegende, usw. . .. Sie lassen sich mit dem Befehl gda () für alle Fenster bzw. gca () für das aktuelleFenster aufrufen. Die Fenster-Eigenschaften sind die Eigenschaften des graphischen Fensters wie ihrName, ihre Geometrie (Breite und Höhe), ihre Position auf dem Bildschirm, und weitere Einstellun-gen. Sie lassen sich mit dem Befehl gdf () für alle Fenster bzw. gcf () für das aktuelle Fensteraufrufen. Im Beispiel 3.4 werden die Standardeinstellungen eines Graphen angepasstIn der Scilab-Hilfe findet man unter „Scilab help » Graphics > axes_operations > axes_properties“alle Parameter der Achsen-Eigenschaften sowie sämtliche Parameter der Fenster-Eigenschaften unter

Page 22: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3.2 Fortgeschrittene graphische Darstellung Seite 22 / 44

-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0

-4 -3 -2 -1 0 1 2 3 4

sinus mit plot2d1

sincos

sinus mit plot2d2

-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0

-4 -3 -2 -1 0 1 2 3 4

Sinus mit dem plot2d3-Befehl

Am

plitu

de

-1.0-0.8-0.6-0.4-0.20.00.20.40.60.81.0

-4 -3 -2 -1 0 1 2 3 4

sinus mit plot2d4

Am

plitu

de

Abbildung 3.3: Die plot2dx-Befehle

dem Stichpunkt „Scilab help » Graphics > figure_operations > figure_properties“. Alle Befehle sindaufgelistet und ausführlich erklärt.

Diagramm speichern: Das Speichern einer Graphik kann mit einem Befehl direkt aus einenScilab Skript heraus gemacht werden. Dabei ist das Speichern als Vektorgraphik wie *.pdf- *.eps oderals Pixelgraphik wie *.png-, *.jpg-, *.bmp möglich. An diese Stelle werden exemplarisch nur zweiBefehle xs2pdf und xs2png erläutert. Sie sind deswegen wichtig, weil sie eine *.pdf bzw. eine*.png Graphikdatei erstellen, und damit je ein Vertreter von Vektor- bzw. Pixelgraphik beschriebenwird. Darüber hinaus lassen sich beide Dateiformate sehr einfach in ein Latex-Projekt einbinden.

xs2pdf: Die Funktion xs2pdf (win_num, file_name [,orientation]) speichert das Graphikfenster ineine *.pdf-Datei. Als Übergabewert erwartet die Funktion drei Argumente

win_num: Die Nummer der Fensters.

le_name: Der Name der zu erstellenden pdf-Datei.

orientation: Die Ausrichtung des Plotes in der pdf-Datei, wobei dieses ein optionales Argu-ment ist, und nimmt zwei Übergabewerte an ’portrait’ oder ’landscape’ mit ’portrait’ alsStandardeinstellung.

xs2png: Die Funktion xs2png (win_num, file_name) speichert Das Graphikfenster in eine *.png-Datei. Diese Funktion erwartet zwei Argumente:

win_num: Die Nummer der Fensters.

le_name: Der Name der zu erstellenden png-Datei.

Page 23: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3.2 Fortgeschrittene graphische Darstellung Seite 23 / 44

1 s = "Fenster-Einstellungen";//Hilfsvariable2 scf();set(gcf(),"figure_name",s);// Oeffnet ein Fenster mit der name

Fenster-Einstellungen3 hf = gcf();// Handle auf die Fenster-Einstellung4 ha = gca();//Handle auf die Achsen-Einstellung5 hf.figure_name = s;//Aenderung des Fenster-Namens6 plot2d(x,f,2);// oder einfach plot(x,f)7 xtitle(s, "$\textWinkel \varphi \text in Grad $", "Amplitude");8 legend("$x = sin([-\pi\cdots\pi])$",pos = 4);9 ha.x_label.font_size = 2;// X-Achsenbeschriftung vergroessern

10 ha.x_label.position = [3.5,-0.2];11 ha.grid = [1 1];//Das Gitter anders zeichenen lassen12 ha.y_location = "middle";// Y-Achse in Der Mitte verschieben13 ha.y_label.position = [ha.x_ticks.locations(8), -1.2];14 ha.y_label.font_angle = 0;// Dreht das Y-Label15 ha.y_label.position = [-1.2, .9];16 ha.x_location = "middle";// x-Achse in die Mitte verschieben17 ha.children(2).children.thickness = 3;// Kurve dicker zeichnen18 ha.children(1).font_size = 3; // Legende-Schrift vergroessern19 ha.margins=[.05 .1 .1 .1];

Beispiel 3.4: Standard Einstellungen

Abbildung 3.4: Änderung der Grundeinstellung einer Graphik

In der Scilab-Hilfe gibt es dazu auch eine ausführliche Erklärung unter:Scilab help> Graphics : exporting and printing

Die Abbildung 3.5 zeigt den Unterschied zwischen einer *.pdf- und *.png- Grafik. Die dargestellteSignalen zeigen ein verrauschtes Sinus-Signal. Die Abbildung Links zeigt eine Vektorgraphik, welchemit dem Befehl xs2pdf erstellt wurde. Die Abbildung rechts ist ein Pixelgraphik, welche mit demBefehl xs2png erstellt wurde. Das verrauschte Signal ist in der Vektorgraphik selbst nach mehrfachzoomen, noch sehr gut zu erkennen, im Gegensatz dazu lässt sich die Signalform rechts kaum noch

Page 24: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

3.2 Fortgeschrittene graphische Darstellung Seite 24 / 44

-150

-100

-50

0

50

100

150

-4 -3 -2 -1 0 1 2 3 4

-150

-100

-50

0

50

100

150

-4 -3 -2 -1 0 1 2 3 4-150

-100

-50

0

50

100

150

-4 -3 -2 -1 0 1 2 3 4

Abbildung 3.5: Unterschied zwischen Vektorgraphik links (PDF) und Pixelgraphik rechts (PNG)

zu erkennen.

Page 25: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

4 Scilab als Programmiersprache Seite 25 / 44

4 Scilab als Programmiersprache

Scilab verfügt über eine vereinfachte Programmiersprache, die der C- oder Fortran- Sprache ähnlichist. Der Unterschied bei der Scilab-Programmiersprache ist, dass Scilab die Datentypen der Variablen(wie int, char, double, float oder string) automatisch erkennt und diese nicht deklariert werden müssen.Aus diesem Grund dürfen Matrizen nicht aus Zahlen und Zeichenketten erstellt werden. Dafür bietetScilab andere Strukturen wie zum Beispiel list (). Im folgenden Abschnitt werden die grundlegen-den Programmierbefehle wie Schleifen- und Anweisungen erläutert.

4.1 Schleifen

Die for -Schleife: Die for-Schleife bietet die Möglichkeit, einen Befehl oder einen Anweisungsblocksolange auszuführen, bis eine bestimmte Bedingung erfüllt wird. Das folgende Beispiel 4.1 zeigt dieallgemeine Form der Scilab for -Schleife. Dabei wird bei jedem Durchlauf ein Element dem VektorX hinzugefügt um die Funktion f (x) = x2 + 1 für i Werte zu berechnen. Das vorherige graphischeFenster wird gelöscht und die aktuell berechnete Funktion f über x dargestellt. Mit dem Aufruf sleep

(100) wird die Durchführung des Skripts 100 Millisekunden angehalten. Damit kann der aktuelleVerlauf dargestellt werden und man sieht bei der graphischen Berechnung zu.

1 for i = 1:20 // 20 Schleifen2 x(i) = i; f(i) = x(i)^2 + 1;3 clf();plot(x,f,'-*-');xtitle("$f = x^2+1$","x","f(x)");4 sleep(100);// Pause fuer 100ms5 end// End der for-Schleife Rumpf

Beispiel 4.1: Die for-Schleife

Die while -Schleife: Die while-Schleife macht im Prinzip das Gleiche wie die for-Schleife, sie führteine Schleife bis zu einem Abbruchkriterium aus.

1 fd = mopen("charakter.txt",'wt')2 i = 33;//mit 33 Anfangen3 while(i <= 255)4 mfprintf(fd,"%i : %s\n",i,char(i));5 i = i+1;//Inkrementieren darf man nicht vergessen6 end7 mclose(fd);

Beispiel 4.2: Die while-Schleife

Im Beispiel 4.2 werden die ASCII-Zeichen mit dem Befehl char () aus Zahlen generiert und in einerText-Datei gespeichert. Das Beispiel zeigt ebenfalls, wie Variablen bestehend aus einer Zeichenkettemit der Funktion mfprintf () in eine Textdatei geschrieben werden. Vor dem Schreiben muss dieDatei mit mopen () geöffnet und abschließend mit mclose () wieder geschlossen werden.

Page 26: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

4.2 Bedingte Anweisungen Seite 26 / 44

4.2 Bedingte Anweisungen

Die if-then-else-Anweisung: Mit der if else Anweisung kann in Abhängigkeit einer Bedin-gung auf unterschiedliche Anweisungen verzweigt werden. Die allgemeine Form der if-then-else-Anweisung zeigt das Beispiel 4.3 an. Dabei wird ein Sprungsignal mit Hilfe der Sinus-Funktiongeneriert.Die select-case-Anweisung: Bei der select-case -Anweisung wird die Gleichheit einer Variable

1 //if-then-else-Anweisung2 x = linspace(0,2*%pi,10000);U = sin(x);3 for i = 1:length(U);4 if U(i) < 0 then5 U(i) = 1;6 else7 U(i) = 0;8 end9 end

Beispiel 4.3: Die if-Anweisung

geprüft und in verschiedene Fälle „case“ unterteilt. Wenn die Gleichheit mit einem deklariertem Fallbesteht, wird der entsprechende Anweisungsblock ausgeführt. Falls die Gleichheit bei allen Fällenscheitert, wird der Anweisungsblock else ausgeführt. In Beispiel 4.4 wird anhand einer Zahlzwischen 1, · · · ,7 ein Wochentag auf der Konsole ausgegeben, Der Benutzer wird über die Konsolenach einer Zahl gefragt. Falls eine falsche Zahl übergeben wird, wird ein Hinweis auf der Konsoleausgegeben.

1 //select-case- Anweisung2 tag = input("Geben sie eine Zahl zwischen 1 und 7 ein" ) ;3 wochentag = "";4 select tag5 case 1 then wochentag = "Montag";6 case 2 then wochentag = "Dienstag";7 case 3 then wochentag = "Mittwoch";8 case 4 then wochentag = "Donnerstag";9 case 5 then wochentag = "Freitag";

10 case 6 then wochentag = "Samstag";11 case 7 then wochentag = "Sonntag";12 else13 wochentag = "Diese Zahl entsprecht keinen Wochentag";14 end15 disp(wochentag);// Ausgabe der Wert auf der Konsole.

Beispiel 4.4: Die select-Anweisung

Page 27: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

4.3 Eigene Funktionen in Scilab implementieren Seite 27 / 44

4.3 Eigene Funktionen in Scilab implementieren

Scilab bietet die Möglichkeit eigene Funktionen zu implementieren. Man unterscheidet zwischenlokalen und globalen Funktionen. Lokale Funktionen werden in einem Scilab-Skript implementiertund können nur innerhalb dessen verwendet werden, außerhalb bleiben sie unbekannt. Globale Funk-tionen hingegen werden in einer getrennten Datei mit der Endung „*.sci“ implementiert und könnenin allen Scilab-Skripten, wo sie mit dem Befehl exec (datename.sci) geladen worden sind, aufgerufenwerden. Ein Beispiel für die Anwendung von globalen Funktionen sind die im Abschnitt 1.5 disku-tierten MDT-Funktionen. Der Funktionsrumpf einer Scilab-Funktion folgt dem Schema, wie es inBeispiel 4.5 aufgezeigt wird.

1 function [y1,y2,...,yn] = funktion(x1,x2,....,xn)2 //Die Implementierung3 endfunction

Beispiel 4.5: Rumpf einer Funktion in Scilab

Wobei y1,y2, · · · ,yn die Rückgabewerte und x1,x2, · · · ,xn die Argumente bzw. Übergabewerte sind.Im Beispiel ?? im Anhang wird eine eigene Funktion implementiert.

Page 28: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

5.1 Berechnung mit eigenen Funktionen Seite 28 / 44

5 Statistik mit Scilab

Oftmals müssen mit Hilfe von statistischen Methoden Aussagen zum Vertrauensbereich von ver-schiedenen Messsignalen gemacht werden, dazu sind verschiedene Berechnungen durchzuführen.Scilab vereinfacht diese Rechnung durch eine Reihe hilfreicher Standardfunktionen. Im diesem Ab-schnitt wird eine statistische Berechnung einmal mit eigenen Funktionen und dann mit Scilab vordefiniertenFunktionen durchgeführt. Die nachfolgende Auflistung erläutert einige Funktionen zur statistischenBerechnung mit Scilab.

grand : Generiert einen Vektor von Zufallszahlen von verschiedener Verteilung.rand : Generiert einen Vektor von Zufallszahlen.mean : Berechnet den arithmetischen Mittelwert eines Datensatzes.variance: Berechnet die empirische Varianz.stdev : Berechnet die empirische Standardabweichung.tabul : Berechnet die steigende oder absteigend Häufigkeit.histplot: Zeigt das Histogramm eines Datensatzes an.gsort : Sortiert einen Datensatz.cdfnor : Berechnet die Verteilungsfunktion.bar : Für die Balkendiagramm-Darstellung.

5.1 Berechnung mit eigenen Funktionen

Die statistischen Größen wie der arithmetische Mittelwert, die empirische Varianz, die empirischeStandardabweichung und die Verteilungsfunktion sind wie folgt definiert:

Der Datensatz.:D = x1,x2, · · · ,xn

Der arithmetische Mittelwert:

x =n

∑i=0

xi

Die Varianz:

µ =1

n−1·

n

∑i=0

(xi− x)2

Die Standardabweichung:σ =√

µ

Die Verteilungsdichte:

N (x,µ,σ) =1√

2πσe−

(x−µ)2

2σ2

Im Beispiel 5.1 wird gezeigt, wie der Datensatz D statistisch ausgewertet werden kann. Dabei wirdein neuer Datensatz mit der Funktion rand generiert. Durch das 3. Argument „normal“ der Funktion

Page 29: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

5.1 Berechnung mit eigenen Funktionen Seite 29 / 44

rand erreicht wird der Datensatz hier als normalverteilt eingestellt. Die absolute und die relativeHäufigkeit werden mit der Methode „Lookup-Table“ ermittelt.Die Darstellung der Häufigkeiten wird mit dem Befehl bar unterstützt, indem die Klassenmitte ex-plizit dargestellt wird. Für die Darstellung der Klassen wird üblicherweise die Funktion histplot

verwendet. Dieser Funktion kann jetzt auch als Übergabewert „normalization=%f“ mitgegebenwerden. In Abbildung 5.1 ist das vorgestellte Beispiel dargestellt. Mit dem Befehl subplot (1,2,n)

1 D = floor(100 * rand(1,10000,"normal"));//Der normalverteilte Datensatz2 mu = sum(D) / length(D);// Der arithmetischen Mittelwert3 var = sum((D - mu).^2)/(length(D) - 1)// Die Varianz4 sig = sqrt(var);// Die empirische Standardabweichung5 K = linspace(min(D),max(D),10);//Vektor fuer 10 Klassen6 W_K = mean(diff(K));// Breite der Klassen7 K = K + W_K/2;// Einstellen der Klassen auf die Breite W_K8 H_D = zeros(1,10);// Speicher fuer die absolute Haeufigkeit9 //Die Lookup-Table-Methode, um die absolute Haeufigkeit darzustellen.

10 for n = 1:length(D)11 //Umwandlung der Messwerte von D in einen Index von H_D12 i = fix((D(n) - min(D)) / (max(D) - min(D)) * (length(H_D) - 1) + 1);13 H_D(i) = H_D(i) + 1;// Inkrementierung +1 des Elements mit dem Index i14 end15 // Standardmaessig wird die relative Haeufigkeit dargestellt16 h_D = (H_D / (length(D) * W_K));17 // Und zur besseren Darstellung wird noch die Normalverteilungsdichte mit

eingezeichnet18 x = linspace(min(D),max(D),length(D));19 gauss = 1/(sig * sqrt(2 * %pi)) * exp( - ((x - mu).^2)/(2 * sig.^2)); //

Verteilungsfunktion Beispiel 5.1: Statistische Berechnung mit eigenen Funktionen

1 x = linspace(min(D),max(D),length(D));2 gauss = 1/(sig * sqrt(2 * %pi)) * exp( - ((x - mu).^2)/(2 * sig.^2)); //

Verteilungsfunktion3 set(scf(), "figure_name", "Eigene - Funktionen");4 subplot(121);5 title("absolute Haeufigkeit");6 histplot(10 - 1, D, normalization = %f);// Absolute Haeufigkeit7 bar(K,H_D,.4,'b');// 40% Breite derbalken8 legend("Mit hisplot()", "mit bar()")9 subplot(122);

10 title("relative Haeufigkeit");11 plot(x,gauss,'r');12 bar(K,h_D,.4,'b');13 histplot(10 - 1,D);a = gca();14 legend('Verteilungsdichte')15 a.children.children.thickness = 2;

Beispiel 5.2: Darstellung der Häufigkeit mit der Funktion bar

(mit n = 1,2) werden die beide Diagramme nebeneinander dargestellt. Links in der Abbildung ist

Page 30: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

5.2 Berechnung mit den vordefinierten Scilab-Funktionen Seite 30 / 44

die absolute Häufigkeit, und rechts ist die relative Häufigkeit zusammen mit der Verteilungsdichtedargestellt. Die Balkenbreite des Befehls bar ist auf 40 % der Klassenbreite eingestellt, so lassensich die Balken des Befehls histplot auch zeigen.

Mit hisplot()mit bar()

0

500

1000

1500

2000

2500

3000

3500

-367-279-191-103-15 73 161249337425

absolute Haeufigkeit

Verteilungsdichte

0.0000

0.0005

0.0010

0.0015

0.0020

0.0025

0.0030

0.0035

0.0040

0.0045

-367-279-191-103-15 73 161249337425

relative Haeufigkeit

Abbildung 5.1: Absolute und relative Häufigkeit

5.2 Berechnung mit den vordenierten Scilab-Funktionen

1 D = floor(100 * grand(1,10000,"nor",0,1));//2 Dmean = mean(D);//Der arithmetischen Mittelwert3 var = variance(D);// Die Varianz4 sig = stdev(D);//Die empirische Standardabweichung5 x = linspace(min(D),max(D),length(D));6 gauss = 1/(sig * sqrt(2 * %pi)) * exp( - ((x - Dmean).^2)/(2 * var)); //

Die Verteilungsdichte7 //sortieren der Messwerte (Aufsteigend)8 Dsort = gsort(D,'g','i');// Aufsteigend sortieren9 for i = 1:length(Dsort)//Die Verteilungsfunktion

10 F(i) = cdfnor("PQ",Dsort(i),Dmean,sig);11 end

Beispiel 5.3: Statistische Berechnung mit Scilab-Funktionen

Im Beispiel 5.3 werden der arithmetische Mittelwert, die empirische Varianz und die Standardab-weichung sowie die Verteilungsfunktion mit vordefinierten Scilab-Funktionen erstellt. Dazu wird

Page 31: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

5.2 Berechnung mit den vordefinierten Scilab-Funktionen Seite 31 / 44

nochmal ein normalverteilter Datensatz mit grand generiert. Die Verteilungsfunktion wird mit demFunktion cdfnor berechnet.Die graphische Darstellung wird im Beispiel 5.4 gezeigt und in Abbildung 5.2 dargestellt.

1 set(scf(),"figure_name","Statistik");

2 subplot(221)3 histplot(40,D,normalization = %f);4 xtitle("Absolute Haeufigkeit",

"Werte","Haeufigkeit");5 subplot(222);6 histplot(40, D, normalization = %t);7 xtitle("Relative Haeufigkeit",

"Werte", "");8 subplot(223);a = gca();9 plot(x,gauss);

10 a.children.children.thickness = 3;11 histplot(40,D);12 xtitle("Relative Haeufigkeit

Verteilungsdichte ", "Werte","");13 subplot(224);a = gca();14 plot(x,F);15 a.children.children.thickness = 3;16 xtitle("Verteilungsfunktion ",

"Werte",""); Beispiel 5.4: Graphische Darstellung der

statistischen Berechnung

0

10

20

30

40

50

60

70

80

-400 -300 -200 -100 0 100 200 300 400

Absolute Haeufigkeit

Werte

Hae

ufig

keit

0.0000

0.0005

0.0010

0.0015

0.0020

0.0025

0.0030

0.0035

0.0040

0.0045

-400 -300 -200 -100 0 100 200 300 400

Relative Haeufigkeit

Werte

-400 -300 -200 -100 0 100 200 300 400

Relative Haeufigkeit Verteilungsdichte

Werte

0.0

0.10.20.30.4

0.50.60.70.80.9

1.0

-400 -300 -200 -100 0 100 200 300 400

Verteilungsfunktion

Werte

Abbildung 5.2: Graphische Darstellung derstatistischen Berechnung

Page 32: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

6 Polynome und Übertragungsfunktion Seite 32 / 44

6 Polynome und Übertragungsfunktion

Die Berechnung der dynamischen Eigenschaften eines Messsystems erfolgt über die Berechnung ein-er mathematisch beschriebenen Übertragungsfunktion im S-Bereich 4. Scilab stellt hier auch Funk-tionen und Befehle für derartige Berechnungen zur Verfügung. In diesem Abschnitt wird gezeigtwie Polynome erstellt werden, um dann eine Übertragungsfunktion erzeugen. Schließlich soll mitder Übertragungsfunktion dann der Betrags und Phasengang berechnet und simuliert werden. Dafürwerden verschieden Möglichkeiten der Berechnung aufgezeigt.

6.1 Polynom erstellen

In Scilab ist die Variable „%s“ als Polynomvariable vordefiniert. Die Polynome lassen sich einfacherstellen, wie es im Beispiel 6.1 gezeigt wird. Falls ein anderer Buchstabe als Polynomvariable

1 // Vordefinierte Polynomvariable2 P1 = 0.5 * %s^3 + 0.4 * %s^2 + 0.25 * %s + 1;3 disp(P1);4 //Polynomvariable Definieren5 x = poly(0, "x"); //Legt x als Polynomvariable fest6 P2 = (2e-3 * x^2 + 0.01 * x + 1);//Polynom beschreiben7 disp(P2);// Zeigt das Polynom in der Konsole an8 P3 = poly([1 4 3], "n", "coeff");//Polynom direkt erzeugen9 disp(P3)

10 NS = roots(P1);//Berechnet die Nullstellen11 V = horner(P1, [10:10:100]);//Berechnet P1 fuer 10 20...1000

Beispiel 6.1: Polynom Operationen

definiert werden soll, wird die Funktion poly an dieser Stelle verwendet, wie Beispiel 6.1 zeigt.Mit der Funktion poly () lassen sich Polynome direkt erstellen, wie im Beispiel 6.1 gezeigt wird. DieNullstellen eines Polynoms lassen sich mit der Funktion roots () berechnen. Die Funktion horner

() berechnet den Zahlenwert y = P(x) eines Polynoms für einen Wert x. Dabei kann x auch ein Vektorsein. Die Rückgabe „y“ ist in diesem Fall entsprechend ein Vektor der selben Dimension wie x. (sieheBeispiel 6.1)

6.2 Übertragungsfunktion

Die Übertragungsfunktion eines zeitkontinuerlichen lineares Systems wird mit der Funktion G =syslin (’c’,P1,P2) aus zwei Polynomen ‘(„P1“ Zähler-Polynom) und („P2“ Nenner-Polynom) gebildet.Daraus werden verschiedene Größen und Diagramme ermittelt. Die folgende Liste zeigt einige davon:

4siehe Abschnitt 4.4 „Dynamisches Verhalten“ in den Vorlesungsfolien

Page 33: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

6.2 Übertragungsfunktion Seite 33 / 44

Die Ortskurve: Mit der Funktion [x,y]= nyquist (G,f1,f2) wird die Ortskurve für den Frequenzbere-ich zwischen „f1“ und „f2“5 berechnet.

Sprungantwort: Mit der Funktion u= csim (’step’,t,G) für einen Zeitvektor t, der vorher erzeugtwerden muss, wird das Ergebnis aus Anregungssignal und Übertragungsfunktion berechnet.Die Bezeichnung 'step' legt das Eingangssignal fest. In diesem Fall ein Sprungsignal. FürImpulssignale gibt man stattdessen 'impuls' ein. Mit plot (t,u) kann nun die Sprungantwortdarstellt werden.

Bodediagramm: Mit der Funktion bode (G,f1,f2) für den Frequenzbereich zwischen „f1“ und„f2“ wird ein Bodediagramm berechnet und dargestellt.

Frequenzgang: Mit der Funktion [f,FG]= repfreq (G,f1,f2) für den Frequenzbereich zwischen„f1“ und „f2“ wird der Frequenzgang „FG“ für die Frequenzen „f“ berechnet.

Amplituden- und Phasengang Mit der Funktion [phi,amp]= phasemag (FG) wird der Amplituden-„amp“ und der Phasengang „phi“ berechnet. Dabei ist „FG“ der mit repfreq zuvor berechneteFrequenzgang.

5Hier sind f1 und f2 die Frequenzen in Hertz

Page 34: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

6.3 Berechnung für einen Tiefpassfilter 1. Ordnung Seite 34 / 44

6.3 Berechnung für einen Tiefpasslter 1. Ordnung

Im folgenden Beispiel wird die Übertragungsfunktion, die Sprungantwort und das Bodediagrammeines Tiefpasses erster Ordnung ermittelt. Das Scilab-Skript zur Berechnung der Übertragungsfunk-tion, der Sprungantwort und des Frequenzgangs ist dem Beispiel 6.2 zu entnehmen.

R

Cue(t) ua(t)

ie(t) ia(t) = 0

ic(t)

100 µF

10 Ω

Abbildung 6.1: Tiefpass 1. Ordnung

Differenzilagleichung aufstellen:

ue(t) = ie(t) ·R+ua(t)

ic(t) =C · dua(t)dt

RC · dua(t)dt

+ua(t) = ue(t)

Lapace Transformation:

Ue(s) = RC · s Ua(s)+Ua(s) =Ua(s)(RC · s+1)

Übertragungsfunktion:

G =Ua(s)Ue(s)

=1

τs+1mit τ = RC

Der Befehl xdel (n) schließt das graphische Fenster Nummer „n“. Der Befehl winsid () gibt dieNummern der geöffneten Fenstern zurück. Wenn die beiden Befehle so kombiniert werden, wie in der3. Zeile im Beispiel 6.2, dann werden alle geöffneten Fenstern geschlossen.

1 clc;2 clear;3 xdel(winsid());4 set(gda(), "font_size", 3);5 R = 10;// Widerstand [Ohm]6 C = 100e-6// Kapazitaet [F]7 tau = R * C;// Zeitkonstante [s]8 fc = 1/(2 * %pi * tau);// Grenzfrequenz [Hz]9 P = poly([1 tau], "s", "coeff");//Polynom erzeugen.

10 G = syslin('c', 1, P);//Uebertragungsfunktion RC-Tiefpass11 t = linspace(0, 4 * tau , 1000); //Zeit Vektor12 u = csim('step', t, G);//Sprungantwort13 [f, FG] = repfreq(G, 1, 1e5)//Frequenzgang (kompexe Zahlen)14 [phi, amp] = phasemag(FG);// Phasengang und Amplitudengang

Beispiel 6.2: Übertragungsfunktion Tiefpass 1. Ordnung

Im Beispiel 6.3 wird die Darstellung der Sprungantwort mit dem Befehl plot durchgeführt.Im Beispiel 6.4 wird die Darstellung des Frequenzgangs durchgeführt, dabei wird die x-Achse loga-rithmisch aufgeteilt und mit Hilfe des Befehls subplot () das Bodediagramm in der üblichen Formangezeigt.

Page 35: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

6.3 Berechnung für einen Tiefpassfilter 1. Ordnung Seite 35 / 44

1 set(gcf(), "figure_name", "Sprungantwort"); a = gca();// Achseneigenschaften2 plot(t * 1e3, u, 'r');//Zeitskalierung in ms3 a.children.children.thickness = 3; // Kurve dicker zeichnen.4 xtitle("Sprungantwort eines Tiefpasses 1. Ordnung", "Time in ms",

"Amplitude");5 xgrid();

Beispiel 6.3: Darstellung der Sprungantwort

1 set(scf(), "figure_name", "Bodediagramm");2 subplot(2, 1, 1);a1 = gca();3 plot2d('ln', f, amp, 2);4 xtitle("Das Bodedieagramm eines Tiefpasses 1. Ordnung", "Frequenz in Hz",

"Amplitude in dB");5 xgrid()6 subplot(212);a2 = gca();7 plot2d('ln', f, phi, 5);8 ylabel("Phase in grad");9 xgrid()

10 a1.children.children.thickness = 3;11 a2.children.children.thickness = 3;

Beispiel 6.4: Darstellung des Frequenzgangs

Schließlich werden im Beispiel 6.5 die graphischen Fenster-(Ergebnisse) mit dem Befehl xs2pdf in„*.pdf“-Dateien gespeichert. Dazu wird der xs2pdf -Befehl in einer for-Schleife verwendet. Diesewird gemäß der Länge des mit winsid () erstellten Vektors „win“ durchlaufen. Die Namen dererstellten „*.pdf“-Dateien entsprechen den Namen der Fenster. Diese sind zuvor mit dem Befehl set

( gcf (),figure_name,“Fenstername“) im Beispiel 6.3 und im Beispiel 6.4) umbenannt worden.

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0

Sprungantwort eines Tiefpasses 1. Ordnung

Time in ms

Am

plitu

nde

6.2.a Sprungantwort

-60

-50

-40

-30

-20

-10

0

10 10 10 10 10 100 1 2 3 4 5

Das Bodedieagramm eines Tiefpasses 1. Ordung

Frequenz in Hz

Am

plitu

de in

db

-90-80-70-60-50-40-30-20-10

0

10 10 10 10 10 100 1 2 3 4 5

Pha

se in

gra

d

6.2.b Bodediagramm

Page 36: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

7 Xcos Seite 36 / 44

1 win = winsid();2 for i = 1:length(win)3 scf(win(i));4 name = get(gcf(), "figure_name");5 xs2pdf(win(i), name);6 end

Beispiel 6.5: In pdf-Datei Speichern

7 Xcos

Xcos, früher bekannt unter dem Namen Scicos (Scilab Connected Object Simulator), ist ein Scilab-Paket für das Modellieren und die Simulation von dynamischen Systemen. Xcos wird aus Scilabgestartet, und wird auch geschlossen, wenn die Scilab-Instanz geschlossen wird. Durch das Ausführendes Befehls xcos () in der Scilab-Konsole oder durch Anklicken der Taste Applications > Xcos imScilab-Menü öffnet sich der Xcos-Editor und der „Paletten-Browser - Xcos“ als zweites Fenster,dieser enthält die gesamten Blöcke der Xcos-Modellbibliothek, wie in Abbildung 7.1 dargestellt.

Abbildung 7.1: Xcos Editor und Platten-Browser

7.1 Arbeiten mit Xcos

Ein Xcos-Block wird durch das Schieben der Blöcke vom Paletten-Browser auf den Xcos-Editor per„Drag and Drop“ platziert. Die Blöcke werden miteinander verbunden, indem der Pfeil eines Blockesangeklickt und eine Verbindungslinie zum Pfeil des nächsten Blockes gezogen wird. Vor der Simula-tion müssen die Parameter der Blöcke eingestellt werden. Dazu klickt man mit der linken Maus-Tastezwei mal auf den Block, woraufhin sich ein Dialogfenster öffnet, in dem die Parameter des Modulseingestellt werden. Die Simulationsparameter müssen ebenfalls eingestellt werden, dazu öffnet manzunächst das Einstellungsfenster. Durch Anklicken der Taste Simulation > Einstellung im Xcos-

Page 37: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

7.2 Steuerung von Xcos mit Scilab-Befehlen Seite 37 / 44

Menü, gibt man die Simulationszeit und die Dauer unter Finale Integerationszeit ein. Beider Verwendung eines CSCOPE-Blocks muss die Simulationszeit der Refresh period des CSCOPE

entsprechen. Als Beispiel wird die Sprungantwort des Tiefpassfilters von Abschnitt 6 mit Xcos simuliert.Zunächst wird einen Xcos-Editor geöffnet und die folgenden Blöcke platziert.

STEP_FUNCTION: im Paletten-Browser unter Quellen > STEP_FUNCTION; generiert ein Sprungsig-nal

CLR: im Paletten-Browser unter Zeitkontinuierliche Systeme > CLR; modelliert das Verhal-ten des kontinuierlichen linearen Systems

MUX: im Paletten-Browser unter Signal Routing > MUX; fast mehrere Signal zusammen

CSCOPE im Paletten-Browser unter Senken > CSCOPE; stellt die Signale graphisch dar

CLOCK_c im Paletten-Browser unter QUELLEN > CLOCK_c; gibt dem Block CSCOPE die Schrittevor

Dann werden die Blöcke mit einander verbunden und deren Parameter eingestellt. Durch Doppelk-lick auf den Block öffnet sich das Einstellungsfenster und kann entsprechend parametrisiert werden,wie Abbildung 7.2 zeigt. Variablen können in Xcos jedoch erst verwendet werden, wenn sie überSimulation > Kontext setzen gespeichert worden sind. Beispielsweise wird hier für den Param-eter Denominator (s) vom Block CLR die Variable „P“ eingegeben. „P“ muss dem Nenner-Polynomder Übertragungsfunktion vom Tiefpass 1.Ordnung aus Abbildung 6.1 entsprechen.Schließlich wird die Simulation eingestellt, dafür wird das Fenster „Setze Parameter“ durch Anklick-en der Taste Simulation > Einstellung im Xcos-Menü geöffnet. Der Wert „Finale Integrationszeit“wird nun eingestellt, dieser entspricht der Simulationszeit und muss mit dem Wert des Parameters„Refresh period“ des Blocks “CSCOPE“ übereinstimmen.Durch Klicken des Buttons mit dem Dreiecksymbol im Xcos-Menü wird die Simulation gestartet.Nach Ablauf der Simulationszeit öffnet der Block “CSCOPE“ ein graphisches Fenster mit dem Sim-ulationsergebnis, wie es in Abbildung 7.3 gezeigt wird.

7.2 Steuerung von Xcos mit Scilab-Befehlen

Im Folgenden wird anhand eines Beispiels gezeigt, wie man eine Xcos-Simulation aus einem Scilab-Skript durchführen kann.In Beispiel 7.1 wird die Anstiegszeit der mit Xcos simulierten Sprungantwort mit Scilab berechnetund graphisch dargestellt. Dabei werden die Werte von Xcos mit dem Block „Senken > TOWS_c“an Scilab übergeben. Dieser hat drei einstellbare Parameter, zwei davon sind sehr wichtig. „Size ofbuffer“ gibt die Größe des Speichers an, der Wert muss mindestens der Anzahl der zu erwartendenSimulationswerte entsprechen. „Scilab Variable name“ ist der Name der Variable für den Scilab-Workspace. Standardmäßig wird diesem Parameter der Buchstabe „A“ zugewiesen, diesen sollte

Page 38: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

7.2 Steuerung von Xcos mit Scilab-Befehlen Seite 38 / 44

Abbildung 7.2: Simulation eines Tiefpasses 1. Ordnung

Abbildung 7.3: Sprungantwort des Tiefpasses mit Xcos

man für eine bessere Zuordnung umbenennen. Um weitere Möglichkeiten aufzuzeigen, wird erst dasSprungsignal in Scilab generiert, und dann mit dem Block „Quellen > FROMWSB“ aus dem Xcos-Editor importiert. Anschließend wird die Simulation aus Scilab heraus gestartet, um zu zeigen, wieman eine Simulation und eine Auswertung automatisieren kann. Eine weitere Möglichkeit bestehtdarin, die Simulation innerhalb eines Skriptes aufzurufen.

Page 39: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

7.2 Steuerung von Xcos mit Scilab-Befehlen Seite 39 / 44

Abbildung 7.4: Einstellung der Scilab-Blöcke

1 exec("sprung.sci",-1); // laedt die Datei sprung.sci2 [t,U] = sprung(0,10e-3,1e-3,1e-6);3 R = 10;// Widerstandswert in Ohm4 C = 100e-6// Kapazitaet in F5 tau = R * C;// Zeitkonstante6 P = poly([1 tau],"s","coeff");//Polynom erzeugen.7 Ein = [t,U];// bildet den Parameter des Xcos-Blockes "FROMWSB"8 rst1 = importXcosDiagram('xcos_Scilab_tiefpass.zcos');// Importiert die

Xcos-Datei9 if (~rst1) // Falls die Datei (Tiefpass_cos.xcos) nicht gefunden wird

10 printf("Xcos_sprungantwort.xcos kann nicht gelesen werden!!")11 printf("Scilab zeigt auf das verzeichnis: "+pwd())12 abort;13 end14 Info = xcos_simulate(scs_m,4); // startet die Simulation15 Ue = Aus.values(:,1); //Holt die Eingangswerte von Ein-Struktur16 Ua = Aus.values(:,2); //Holt die Ausgangswerte von Ein-Struktur17 t = Aus.time; // Holt die Werte der Zeit von Ein-Struktur18 ind10 = find(Ua >= .1 * max(Ua),1);19 ind90 = find(Ua >= .9 * max(Ua),1);20 t10 = t(ind10); // Zeitpunkt, in dem U 10% der maxwert erreicht21 t90 = t(ind90); //Zeitpunkt, in dem U 90% der maxwert erreicht22 tr = t90 - t10; // Anstiegszeit tr23 // Plotten24 set(scf(),"figure_name", "Anstiegszeit");25 plot2d(t,[Ue Ua], [2 5]);26 plot2d([t10 t90], [Ua(ind10) Ua(ind90)], -1);27 xstring(t10,Ua(ind10), "10 % der max wert")28 xstring(t90,Ua(ind90), "90 % der max wert")29 xstring((t10+t90)/2,max(Ua)/2, "Anstiegszeit t_r = "+string(tr * 1e3)+" ms")30 xlabel("Zeit in s");31 ylabel("Amplitude");

Beispiel 7.1: Anstiegszeit mit Scilab berechnen und darstellen

Page 40: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

7.2 Steuerung von Xcos mit Scilab-Befehlen Seite 40 / 44

10 % der max wert

90 % der max wert

Anstiegszeit t_r = 2.197 ms

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1.0

0.000 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.010

Sprungantwort eines RC-Tiepasses mit Anstiegszeit

Zeit in s

Am

plitu

de

Abbildung 7.5: Sprungantwort eines RC-Tiepasses mit Anstiegsz

Page 41: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

8 Anhang Seite 41 / 44

8 Anhang

Literatur

[1] The Scilab ConsortiumScilab online Hilfehttp://help.scilab.org/docs/5.3.3/en_US/

[2] Jean-Marie ZoggArbeiten mit Scilab und Xcos Scilab für numerische Berechnungen. Xcos für grafische Simulation

http://www.zogg-jm.ch/

[3] Alexander StoffelKurzeinführung in Scilabhttp://alex.nt.fh-koeln.de/

[4] Bruno PinconEine Einführung in Scilabwww.scilab.org/contrib/download.php?fileID=362PinconD.pdf

Page 42: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

Literatur Seite 42 / 44

Beispiel einer selbst implementierten Funktion

Im Beispiel 8.1 ist ein Funktion implementiert, die ein Sprungsignal generiert. Sie erwartet vierParameter Anfangszeit, Endzeit, Schwellenzeit und schließlich die Anzahl der Werte.

1 //Funktion generiert eine Sprungsignal2 function [t,U]=sprung(t0,T_s,tr,dt)3 if (argn(2) < 4) then4 printf('\n');5 printf('Die Funktion generiert ein Sprungsfunktion\n');6 printf('\n');7 printf('1. Parameter - t_0, Anfangszeit\n');8 printf('2. Parameter - T_s, Endzeit\n');9 printf('3. Parameter - tr, Schwellenzeit\n');

10 printf('4. Parameter - n, Anzahl der Abtastwerte\n');11 printf('\n');12 printf('1. Rueckgabewert - Sprungsfunktion\n');13 printf('\n');14 abort;15 end16 if tr>T_s then17 error("Schwellenzeit ist groesser als die Simulationszeit",9)18 end19 if tr<t0 then20 error("Schwellenzeit ist groesser als die Anfangszeit",9)21 end22 t=[t0:dt:T_s]23 U=zeros(1,length(t));24 ind=find(t>=tr);25 U(ind)=126 endfunction

Beispiel 8.1: Eigene Funktion sprung.sci

Page 43: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

Verzeichnis der Beispiele

1.1 scilab.start Anpassen (Windows) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 scilab.start Anpassen (Ubuntu) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Scilab Command Window (MAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4 Variablen erstellen und in eine Datei Speichern . . . . . . . . . . . . . . . . . . . . 91.5 Variablen aus einer Datei in den WS hochladen . . . . . . . . . . . . . . . . . . . . 92.1 Eine Matrix definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2 Matrix aus Vektoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3 Matrix generieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Matrixoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Bereich isolieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.6 Die find-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.1 Die plot-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Überlagerte Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 Die plot2dx-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.4 Standard Einstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1 Die for-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2 Die while-Schleife . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.3 Die if-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.4 Die select-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.5 Rumpf einer Funktion in Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.1 Statistische Berechnung mit eigenen Funktionen . . . . . . . . . . . . . . . . . . . . 295.2 Darstellung der Häufigkeit mit der Funktion bar . . . . . . . . . . . . . . . . . . . . 295.3 Statistische Berechnung mit Scilab-Funktionen . . . . . . . . . . . . . . . . . . . . 305.4 Graphische Darstellung der statistischen Berechnung . . . . . . . . . . . . . . . . . 316.1 Polynom Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326.2 Übertragungsfunktion Tiefpass 1. Ordnung . . . . . . . . . . . . . . . . . . . . . . 346.3 Darstellung der Sprungantwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.4 Darstellung des Frequenzgangs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.5 In pdf-Datei Speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.1 Anstiegszeit mit Scilab berechnen und darstellen . . . . . . . . . . . . . . . . . . . 398.1 Eigene Funktion sprung.sci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Abbildungsverzeichnis

1.1 Startfenster Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Weitere Möglichkeit der Scilab-Editor zu starten . . . . . . . . . . . . . . . . . . . . 91.3 Scilab-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

Page 44: Einführung in Scilab und Xcos - MDT: Startseite · 2014-10-20 · Scilab ist ein freies Programm-Paket für numerische Berechnungen. Entwickelt wurde es am franzö-sischen Institut

Abbildungsverzeichnis Seite 44 / 44

1.4 Scilab Hilfe-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1 Die plot-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Überlagerte Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3 Die plot2dx-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.4 Änderung der Grundeinstellung einer Graphik . . . . . . . . . . . . . . . . . . . . . 233.5 Unterschied zwischen Vektorgraphik links (PDF) und Pixelgraphik rechts (PNG) . . 245.1 Absolute und relative Häufigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305.2 Graphische Darstellung der statistischen Berechnung . . . . . . . . . . . . . . . . . 316.1 Tiefpass 1. Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347.1 Xcos Editor und Platten-Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367.2 Simulation eines Tiefpasses 1. Ordnung . . . . . . . . . . . . . . . . . . . . . . . . 387.3 Sprungantwort des Tiefpasses mit Xcos . . . . . . . . . . . . . . . . . . . . . . . . 387.4 Einstellung der Scilab-Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397.5 Sprungantwort eines RC-Tiepasses mit Anstiegsz . . . . . . . . . . . . . . . . . . . 40