IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Linux - Anwendungssoftware - Octave



Octave

octave (matlab(R) clone) wird vorgestellt.


Autor: Franz Schaefer (mond)
Datum: 02-02-2002, 14:04:23
Referenzen: info octave
help am octave prompt.
http://www.octave.org/
http://www.octave.org/doc/octave_toc.html
Schwierigkeit: Anfänger
Ansichten: 5449x
Rating: 8.5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Übersicht

nachdem wir die basis konzepte von unix und den grundlagen der
systemadministration hinter uns gebracht haben haben wollen wir uns jetzt
eine zeit lang mal nuetzlichen applicationen widmen.

octave ist ein cloen (selbe funktion aber neu programmiert) der mathematik
software "matlab" (kosten etwa 500 EUR oder mehr... )

octave ist fuer numerische berechnungen. rechnet also nicht symbolisch
sondern mit konkreten zahlen. man kann interaktiv rechnen. matrizen
verarbeiten und 2 oder 3 dimensionale plots ausgeben. bei plots greift
octave auf das bewerte "gnuplot" zurueck.

neben dem interaktiv rechnen kann man in sogenannten .m files eigen
funktionen definieren. hier gibt es eine breite sammlung an sogennanten
"toolboxen" (viele davon eigentlich fuer matlab geschrieben die auch auf
octave laufen). weiters kann man auch in bester unix tradition scripts in
octave schreiben.

eine beispiel octave sitzung:

octave

danach haben wir einen octave prompt:

octave:1>

octave verwendet gnu readline und die bedinung ist wie in der bash
gewohnt.

alfons=3

weisst der variable alfons den wert 3 zu.

alfons*7

gibt uns den wert 21 aus.


t=[1 3 7]

erzeugt einen zeilen vekotr (d.i eine matrix mit nur einer zeile aber
(hier) 3 spalten.)


t=[1:10]

erzeigt einen zeilenvektor mit den werten 1 2 3 ... bis 10. der vektor
wird danach ausgegeben. bei grossen vektoren und matrizen will man die
nicht unbedingt sehen (1000 und mehr werte muellen einem ziemlich dem
bildschirm zu). setzte man hinter einen octave ausdruck einen ; so wird das
ergebeniss der berechnung NICHT ausgegeben:

t=[0:0.1:10];

erzeugt einen zeilenvektor mit den 101 werten [0 0.1 0.02 ... 9.9 10 ]

t[7:9]

list das 7te 8te und 9te element von t aus.


a=sin(t);

wendet die sinus funktion auf jedes element des vektors an. und erzeugt so
einen ergebniss zeilenvektor.

plot(t,a);

erzeugt einen plot mit dem t vektor als x werte und dem a vektor als y
werte. (funktioniert nur wenn man im X11 eingelogt ist).

will man den plot nicht am bildschirm sondern in eine datei kann man das
mit dem befehel:

gset term postscript
gset output "bla.ps"

sagt man dem octave dass es die plot ausgaben (via gnuplot) in die datei
bla.ps im postscript format schreiben soll.

grid

schaltet gitterlinien bei plots ein

replot

zeichnet den plot von vorhin neu. diesmal dann in die datei bla.ps

octave (gnuplot) kann auch in den formaten:

aed512 aed767 aifm bitgraph cgm corel dumb dxf eepic emtex epson-180dpi
epson-60dpi epson-lx800 fig gpic hp2623a hp2648 hp500c hpdj hpgl hpljii
hppj imagen kc-tek40xx km-tek40xx latex linux mf mif mp nec-cp6 okidata
pbm pcl5 png postscript pslatex pstex pstricks qms regis selanar starc
table tandy-60dpi tek40xx tek410x texdraw tgif tkcanvas tpic vttek x11
xlib

zeichnen.

gset term

gibt eine uebersicht ueber die wichtigsten formate.

gset output
gset term X11

setzt wieder die X11 obeflaeche als ausgabegeraet.

octave kann nicht nur grafik sondern auch sound ausgeben:

t=(1:8000)/8000*2*pi;playaudio(sin(t*400)*125)

spielt einen 400hz ton eine sekunde lang ab (die sample rate ist per
default 8khz und die amplitude ist ein 8 bit signed integer)

t=(1:8000)/8000*2*pi;playaudio(40*rand(size(t)).+ sin(400*t)*80)

waere ein sinuston mit rauschen unterlegt.

help

gibt eine uebersicht ueber eingebaute oder im pfad vorhanden .m file
funktionen.

z.b:

help pmt

erklaert die funktion pmt. die rechnet z.b. die tilgunsraten eines kredits
aus.

m=rand(5,3)

erzeugt eine 5 zeile/ 3 spalten matrix mit zufaelligen werten zwischen 0
und 1;

plot(m)

zeichnet die graphen der 3 spaltenvektoren.

mesh(m)

eine 3 dimensionale oberflaeche beschrieben durch die werte der matrix.

m=5*m;

skalierte die matrix mit 5;

b=m'

transponiert die matrix (zeilen werden zu spalten und vv.)

b*m

bildet das matrizenprodukt b*m

size(m)

gibt die spalten und zahlen der matrix aus.

ones(size(m))

erzeugt eine matrix mit nur einsen.

t*ones(size(t))'

waere also das inprodukt von t mit einem vektor der genauso gross ist wie
t und nur einsen hat. also aller elemente summe von t. einfacher zu
erreichen mit:

sum(t)

oft will man mathematische operationen nicht im matrizen stil machen
sondern jedes ellement einer matrix oder eines vektors mit dem
korrespondierenden ellement einer anderen matrix verarbeiten.

fuer diese operationen schreibt man in octave .* .+ ./ etc..

z.b:

a=t .+ sin(t) ;

bildet einen vektor aus der elemntweisen adition des ersten vektors (t)
mit dem zweiten vektor der aus der elemenweisen anwendung des sinus auf den
vektor t entstanden ist.

plot(t .+ sin(t));

zeigt den vektor an.

fuer techniker praktisch sind auch die logarithmischen plots:

semilogx semilogy loglog ....

octave arbeitet selbstverstaendlich auch mit komplexen zahlen:

plot(roots(1:100),'x')

rechnet (naeherungsweise) die nullstelen des polynoms

1*z^99 + 2*z^98 + ... 99*z + 100

die conjugiert komplexen loesungen werden mit 'x' markiert und liegen
interssanterweise fast auf einem kreis.

eigene funktionen kann man in .m files schreiben. z.b.:

in das file bla.m im aktuellen verzeichniss schreiben wir:

function ergebniss = bla (x)

ergebniss = sin(x) .* cos(x) ;

endfunction

dann rufen wir in octave die funktion auf:

bla([0 pi/4 pi/2 ])
ans = 0.00000 0.50000 0.00000

variablen kann man auch abspeichern und laden:

save bla.txt m t

speichert die variablen m und t im file bla.txt ab.
das file ist ascii text und kann mit einem editor bearbeitet werden.

load bla.txt

laed alle in bla.txt enthaltenen variablen wieder in die octave umgebung.

wie gesagt laesst sich octave auch als script sprache verwenden:
im file: bla.oct

#!/usr/bin/octave
gset term postscript
gset output "bla.ps"
grid
plot(sin(0:0.1:5*pi));

und dann ./bla.oct ausgefuehrt erzeut den plot als bla.ps file.

mehr zu octave in der doku...

EXERCISES:

* zeichne eine parabel und eine sinuskurve

* wie klingt eine schwebung aus einem ton mit 1000 und einem mit 1002 hz?

* zeichne einen mesh plot mit einer flaeche die, von einem zentrum
ausgehende wellenlinien zeigt.

______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04506
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06243
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1142
Comments: 0