Sie befinden sich in den Archiven der Kategorie Scilab Shorties.
| M | D | M | D | F | S | S |
|---|---|---|---|---|---|---|
| « Feb | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||
- Gedankengänge… (4)
- Scilab Shorties (7)
- Software (1)
- 26.2.2010: Kontinuität ist....
- 25.2.2010: Abstraktion als Leistung erkennen.....
- 24.2.2010: Politik auf all Deinen Wegen....
- 23.2.2010: Assistenten sind nicht so ....
- 11.2.2010: Parametervariation for-Schleife (Scilab)
- 9.2.2010: Schreiben einer ASCII Datei (Scilab)
- 8.2.2010: Grafikfenster strukturieren (Scilab)
- 5.2.2010: Legende neu positionieren (Scilab)
- 4.2.2010: Plot der Funktion sinx/x - Nullstellendivision (Scilab)
- 3.2.2010: Ereignisanalyse - Schwellwert (Scilab)
Allgemein
FAMOS
Scilab
Archiv der Kategorie Scilab Shorties
Parametervariation for-Schleife (Scilab)
11.2.2010 von XS.
Sinus- und Kosinusfunktionen mit Amplitudenvariation von 1 bis 10 können über über eine Schleife realisiert werden. Scilabs matrizenorientierte Abarbeitung erspart den separaten Zähler. Die beiden Datensätze werden im zusammen dargestellt, sind aber eigenständige Datensätze, da durch das Apostroph die Matrix in Spalten umgebrochen wird. Deshalb werden in der grafischen Darstellung automatisch verschiedene Farben zugewiesen.
clf()
Sinus=sin([0:1/1000:2]*%pi);
plot2d(Sinus)
Cosinus=cos([0:1/1000:2]*%pi);
plot2d(Cosinus)
for Amplitude=1:10
plot2d([Amplitude*Sinus' Amplitude*Cosinus'])
end
Geschrieben in Scilab Shorties | Keine Kommentare »
Schreiben einer ASCII Datei (Scilab)
9.2.2010 von XS.
Für Dateizugriffe stehen in Scilab eine Reihe von Befehlen zur Verfügung.
Wir können mit dem fprintfMat() Befehl eine Matrix in ein Datenfile im aktuellen Datenverzeichnis schreiben, z. B.:
x=[1:10]'; z=x*x'; fprintfMat("Unser1x1.txt",z,'%5.2f');
Das Format %5.2 entspricht 5 möglichen Vorkomma- und 2 Nachkommastellen.
Im Explorer finden wir unter dem aktuellen Verzeichnis die entsprechende Textdatei “Unser1×1.txt”:
Geschrieben in Scilab Shorties | Keine Kommentare »
Grafikfenster strukturieren (Scilab)
8.2.2010 von XS.
Die Funktion subplot() strukturiert das Grafikfenster in verschiedene Teilfenster und adressiert das aktuelle Unterfenster, z. B.
subplot(2,2,1);
Die Aufteilung erfolgt in 2 Zeilen und 2 Spalten. Adressiert wird hier Fenster 1.
Die Fenster werden in Leserichtung (von links nach rechts, Zeile für Zeile) durchnummeriert.
Der Inhalt der Fenster wird mit einem plot() Befehl nach Adressierung des Teilfensters durch subplot() übertragen.
-> Scilab Schulungen, IT Dienstleistungen
Geschrieben in Scilab Shorties | Comments Off
Legende neu positionieren (Scilab)
5.2.2010 von XS.
Die an der Standardposition eingeblendete Legende soll an eine andere Position verschoben werden. Dazu müssen wir Zugriff auf die Eigenschaften des Grafik-Fensters nehmen. Die Eigenschaften des Grafik-Fensters lassen sich mit dem Befehl gca() auslesen, z. B.:
Achse=gca()
und erhalten als Ergebnis die Eigenschaften und Einstellungen des aktuellen Grafik-Fensters in der Konsole ausgegeben:
Das Pendant dazu findet sich im Axes-Editor, in dem die meisten dieser Eigenschaften dem Benutzer grafisch zur manuellen Bedienung zugänglich gemacht wurden. Im Objekt-Browser des Dialogs sehen wir auch die hierarchische Struktur des Grafikbrowsers. Combound (Grafikobjekte, Komponenten) und Legend (Legende) liegen eine Ebene tiefer als das Axes Objekt.
Diese hierarchische Beziehung wird auch in der Konsolenausgabe der Achsen-Eigenschaften deutlich.
parent: Figure
children: ["Compound";"Legend"]
Combound und Axes sind die Kinder (children) des Axes-Objekts, Figure ist das dazugehörige Elternobjekt (parent). Die Begriffe stammen aus der objektorientierten Programmierung und da Scilab eine objektorientierte Programmiersprache ist, folgt der Zugriff auf die Legende durch Referenzierung auf das zweite children Objekt in dieser Form:
Legende=Achse.children(2);
Nun können die aktuellen Einstellungen und Eigenschaften des referenzierten Objekts in der Konsole ausgegeben werden.
Auf die Position der Legende kann nun wie folgt Einfluss genommen werden:
Legende.legend_location ="in_upper_right";
Weitere locations sind z. B:
“in_upper_right” : rechte obere Ecke im Koordinatensystem
“in_upper_left”: linke obere Ecke
“in_lower_right”: untere rechte Ecke
“in_lower_left”: untere linke Ecke
“out_upper_right”: rechte obere Ecke außerhalb des Koordinatensystems
“out_upper_left”: außen obere linke Ecke
“out_lower_right”: außen untere rechte Ecke
“out_lower_left”: außen untere linke Ecke
“upper_caption”: oberhalb der linken Ecke des Koordinatensystems
“lower_caption”: unterhalb der linken Ecke der Achsen
-> Scilab Schulungen, Programmierdienstleistungen
Geschrieben in Scilab Shorties | Comments Off
Plot der Funktion sinx/x - Nullstellendivision (Scilab)
4.2.2010 von XS.
Um eine Funktion darzustellen, benötigt man einen Wertevorrat, sonst ist das Ergebnis der Funktionsanwendung nur ein Einzelwert. Ein sinnvoller Wertevorrat für den Sinus läuft von -pi bis pi bzw. ein Vielfaches davon. Damit die Darstellung mit ausreichender Werteanzahl aufgelöst ist: Schrittweite von 1/100.
p=3
x=[-p:1/100:p]*%pi;
y=sin(x)/x;
plot2d(x,y)
Wenn jetzt eine Fehlermeldung in der Scilab Konsole auftaucht, liegt es zunächst daran, dass wir mit y eine Vektordivision durchgeführt haben, deren Ergebnis ein Einzelwert ist. Damit kann der Grafikplot nicht durchgeführt werden. Die Durchführung eine Elementdivision wird mit einen . (punkt) codiert, also:
y=sin(x)./x;
Nun ist das Operationsergebnis korrekt. Da dabei aber eine Division durch 0 durchgeführt wird, kommt es zu einer erneuten Fehlermeldung. Diese können wir vermeiden, indem wir z.B. zuvor eine Ausnahme definieren, z. B. durch den Befehle ieee(2). Der sorgt dafür, dass die Werte, die eine Fehlermeldung produzieren auf nan gesetzt werden. Nan steht für not a number. Diese Werte werden dann nicht ausgewertet.
Alternativ können vor der Berechnung die mit find() gefundenen Nullstellen des Wertevorrats als %nan definiert werden.
Nullenstellen=find(x==0);
x(Nullenstellen)=%nan;
Jetzt funktioniert die Darstellung der Funktion problemlos!
Die versierten Mathematiker erkennen in der Funktion sin(x)/x den Kardinalsinus, für den es in Scilab die Funktion sinc() gibt. Hier verkürzt sich unser Darstellungsproblem auf diese Zeilen:
sinusK=sinc([-3:1/100:3]*%pi)
plot2d(sinusK)
Geschrieben in Scilab Shorties | Comments Off
Ereignisanalyse - Schwellwert (Scilab)
3.2.2010 von XS.
Für die Messdatenauswertung ein unschätzbares Werkzeug: Logikoperationen. Diese lassen sich einsetzen, um z. B. kanalübergreifende Ereignisse zu finden.
Als Beispieldatensatz generieren wir eine Sinusfunktion.
ds=[0:1/1000:1]*2*%pi;
Sinus=sin(ds);plot2d(ds,Sinus) Es sollen alle Werte im Datensatz gefunden werden, die einen Schwellwert von 0.5 überschreiten:
Status=(Sinus>0.5);
Das Ergebnis der Operation soll wieder grafisch dargestellt werden. Da mit plot2d() aber nur Zahlenwerte dargestellt werden können, das Ergebnis einer Logischen Operation aber eine Boolesche Variable mit den Werten True und False darstellt, muss das Ergebnis erst noch in einen Vektor konvertiert werden.
Status=bool2s(Status) ;
Die Darstellung im Grafik-Fenster mit Linienfarbe rot:
plot2d(ds,Status,5)
Der find() Befehl liefert die Postionen der Werte in Sinus, die den Schwellwert überschreiten. Die dazugehörigen y-Werte des Sinus schreiben wir in einen eigenen Datenvektor, den wir uns farbig im Grafikfenster anzeigen lassen.
Positionen=find(Status);yWerte=Sinus(Positionen);plot2d(ds(Positionen),yWerte,3)
Geschrieben in Scilab Shorties | Comments Off
Scilab: Mehrere Datensätze im gemeinsamen Koordinatensystem darstellen
2.2.2010 von XS.
Als Beispieldaten generieren wir mehrere Sinusfunktionen. Den Wertevorrat xWerte_1000 für den Sinus erhalten wir aus einem Zeilenvektor aus 1000 Werten, aufgelöst auf 2*pi/1000 Schrittweite. Die Naturkonstante Pi wird in Scilab mit %pi angegeben.
Wir erzeugen nun drei Sinusfunktionen mit unterschiedlichen Amplituden und Frequenzen. Im Signal werden die drei Funktionen überlagert.
Nun sollen alle diese Beispieldaten in demselben Koordinatensystem als unterschiedliche Kurven dargestellt werden.
Wir weisen den verschiedenen miteinander darzustellenden Datenvektoren der Variable Sinua zu. Werte, die in eckigen Klammern übergeben werden, sind immer Matrizen. Würden wir die einzelnen Datensätze einfach hintereinander schreiben, würden deren Werte alle in einer Zeile stehen und wären somit ein einziger Wertevorrat. Die Zuweisung unterschiedlicher Styles, wie Farben oder Muster, wäre so nicht möglich (da alles derselbe Datenvektor).
Deshalb nutzen wir als Trennzeichen zwischen den Datenvektoren das Apostroph ‘. Dies bewirkt das “Umbrechen” des Zeilenvektors in eine neue Spalten, d. h. für jeden Datensatz existiert nun eine eigene Spalte in der Matrix. Da alle Datensätze gleich lang sind, kann der XY-Plot über dem x-Vektor xWerte_1000 erfolgen. Ansonsten muss darauf geachtet werden, dass der Wertevorrat auf der x-Achse dem darzustellenden Datenvektoren entspricht.
Mit xtitle() werden Texte übergeben, diese können sowohl in ‘Apostroph’ als auch in normale “Anführungszeichen” gesetzt werden. Hiermit wird der Titel der Grafik, sowie die x- und y-Achsenbeschriftung gesetzt.
xWerte_1000=[0:1:1000]*2*%pi/1000;Sinus_1Hz=sin(xWerte_1000);
Sinus_7Hz=1/10*sin(7*xWerte_1000);
Sinus_13Hz=1/20*sin(13*xWerte_1000);
Signal=Sinus_1Hz+Sinus_7Hz+Sinus_13Hz;
Sinua=[Sinus_1Hz' Sinus_7Hz' Sinus_13Hz' Signal'];
plot(xWerte_1,Sinua);
xtitle('Signalgenerierung','Zeitachse','Signale');
Geschrieben in Scilab Shorties | Comments Off