Werkzeuge: Octave: 2D- und 3D-Grafik - ein paar Beispiele
Released by matroid on Fr. 12. August 2022 06:47:16 [Statistics]
Written by Delastelle - 592 x read [Outline] Printable version Printer-friendly version -  Choose language   
Informatik

\(\begingroup\) Mit dem kostenlosen Programm Octave kann man 2D- und 3D-Grafiken erstellen. Ich habe hier einige kurze Beispiele um Grafiken zu erzeugen. Im Artikel gibt es Grafiken und den Quelltext zum Erzeugen dieser Grafiken. Man kann einen Überblick bekommen, was mit Octave möglich ist.

Einleitung

Um Berechnungen am Computer durchzuführen kann man kommerzielle Programme wie Mathematica, Maple oder Matlab verwenden. Wer diese Programme nicht hat, kann auf die kostenlosen Programme Scilab oder Octave zurückgreifen. Diese sind ähnlich zu Matlab. Ich gebe hier einige Grafik-Beispiele zu Ocatve 4.4.1 an. Ich habe die Programme auch mit Octave 7.2.0 gestestet. Die kleinen Programme (m-Files) habe ich selbst geschrieben bzw. vor allem bei den 3D-Programmen habe ich auch Beispielprogramme aus der Octave Online Hilfe verwendet. Ein paar nützliche Hinweise zu Octave: - ";" am Ende einer Zeile -> damit wird eine Berechnung am Bildschirm angezeigt / verborgen - Befehl // zeigt die Hilfe zum Befehl an - Online Hilfe -> eine Suchmaschine findet etwas mit "Octave Befehl" als Eingabe - size(a) // zeige die Dimension von a an - whos/who // zeigt Variablenbelegungen an Für die 2D-Grafiken wurden folgende Befehle benutzt: plot // fplot // plotyy // hist quiver // pie // bar // barh loglog // semilogx // semilogy // spy imagesc // contour // contourf // stairs voronoi (kein Grafik-Befehl) // scatter // ezplot // polar Für die 3D-Grafiken wurden folgende Befehle benutzt: plot3 // ezplot3 // surf // trisurf pie3 // contour3 // quiver3 // ezmesh surfc // mesh // meshc // scatter3 Die Erstellung von 3D-Plots ist häufig komplizierter als die Erstellung von 2D-Plots.

Beispiele zur 2D-Grafik

(Bild 1) \sourceon Octave % normaler Druck plot subplot(2,2,1) x = [0:0.05:2*pi]; plot(x,sin(x)); grid on % normaler Druck fplot subplot(2,2,2); fplot (@cos, [0, 2*pi]); grid on % plotyy: 2 Funktionen in 1 Diagramm x = linspace (-1, 1, 201); subplot (2,2,3); plotyy (x,sin(pi*x), x,10*cos(pi*x)); % Histogramm Hist subplot(2,2,4) a = zeros(100,1); for i = 1:100 zufall = rand()+rand()+rand()+rand()+rand()+rand()+rand()+rand()+rand()+rand(); a(i) = floor(zufall)+1; end hist(a) grid on \sourceoff
(Bild 2) \sourceon Octave % Richtungsfeld quiver subplot(2,2,1) [x,y] = meshgrid(-0.5:0.1:0.5); px = 4*x+y; py = -3*x; quiver(x,y,px,py) axis([-0.5 0.5 -0.5 0.5]) % Tortendiagramm pie subplot(2,2,2) pie([1 2 3]); % Balkendiagramm 1 subplot(2,2,3) bar([1 3 2]); grid on % Balkendiagramm 2 subplot(2,2,4) barh([1 4 2 3]); grid on \sourceoff
(Bild 3) \sourceon Octave % Logarithmischer Plot beide Achsen: loglog subplot(2,2,1) x = [1 2 3]; y = [1 10 100]; loglog(x,y) grid on % Logarithmischer Plot: x Achse subplot(2,2,2) x = [1 2 3]; y = [1 10 100]; semilogx(x,y) grid on % Logarithmischer Plot: y Achse subplot(2,2,3) x = [1 2 3]; y = [1 10 100]; semilogy(x,y) grid on % Anzeige von Nichtnullelementen einer Matrix subplot(2,2,4) a = (rand(10,15)>0.9); spy(a); grid on \sourceoff
(Bild 4) \sourceon Octave % Bild laden und anzeigen subplot(2,2,1) bild = imread('1Ak.jpg'); imagesc(bild); % Höhenlinien contour subplot(2,2,2) colormap ("default"); [x, y, z] = peaks (); contour (x, y, z); grid on % Höhenlinien contour subplot(2,2,3) contourf(x,y,z); % eine Treppenfunktion stairs subplot(2,2,4) x = 1:1:10; y = rand(10,1); stairs(x,y); grid on \sourceoff
(Bild 5) \sourceon Octave % Voronoi Zerlegung: voronoi subplot(2,2,1) x = rand (10, 1); y = rand (size (x)); h = convhull (x, y); [vx, vy] = voronoi (x, y); plot (vx, vy, "-b", x, y, "o", x(h), y(h), "-g"); legend ("", "points", "hull"); % Scatter Plot subplot(2,2,2) x = randn (100, 1); y = randn (100, 1); scatter (x, y, [], sqrt (x.^2 + y.^2)); grid on % ein 2D-Plot subplot(2,2,3) ezplot (@(x, y) x.^2 - y.^2 - 1); % Polar Plot subplot(2,2,4) % clf; theta = linspace (0,2*pi,1000); rho = sin (7*theta); polar (theta, rho); title ("polar() plot"); \sourceoff

Beispiele zur 3D-Grafik

(Bild 6) \sourceon Octave % normaler 3D-Druck plot3 subplot(2,2,1) z = [0:0.05:5]; plot3 (cos (2*pi*z), sin (2*pi*z), z, ";helix;"); plot3 (z, exp (2i*pi*z), ";complex sinusoid;"); % 3D-Plot ezplot3 subplot(2,2,2); fx = @(t) t.*cos (t); fy = @(t) t.*sin (t); fz = @(t) t; ezplot3 (fx, fy, fz, [0, pi], 100); % Oberfläche: surf subplot (2,2,3); [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2+Y.^2); Z = sin(R)./R; surf(X,Y,Z) subplot(2,2,4) colormap ("default"); N = 31; [x, y] = meshgrid (1:N); tri = delaunay (x(:), y(:)); z = peaks (N); h = trisurf (tri, x, y, z, "facecolor", "interp"); axis tight; zlim auto; title (sprintf ("facecolor = %s", get (h, "facecolor"))); \sourceoff
(Bild 7) \sourceon Octave % Tortendiagramm 3D: pie3 subplot(2,2,1) pie3([1 2 3 4],[0 0 0 1]); % Höhenlinien 3D: contour3 subplot(2,2,2); colormap ("default"); [x, y, z] = peaks (); contour3 (x, y, z); grid on % Richtungsfeld 3D: quiver3 subplot (2,2,3); [x, y, z] = peaks (25); surf (x, y, z); hold on; [u, v, w] = surfnorm (x, y, z / 10); h = quiver3 (x, y, z, u, v, w); set (h, "maxheadsize", 0.33); % ein ezmesh-Plot subplot(2,2,4) colormap ("default"); fx = @(s,t) cos (s) .* cos (t); fy = @(s,t) sin (s) .* cos (t); fz = @(s,t) sin (t); ezmesh (fx, fy, fz, [-pi,pi,-pi/2,pi/2], 20); \sourceoff
(Bild 8) \sourceon Octave % Oberfläche: surfc subplot(2,2,1) az = 100; n = 10; %Datensätze X,Y X = randn(1,az); Y = randn(1,az); %Vektor mit linspace X_edges = linspace(min(X),max(X)+0.001,n); Y_edges = linspace(min(Y),max(Y)+0.001,n); %Vordefinition Z Z = zeros(n,n); %Schreibe Inhalte von X_n, Y_n aller Klassen in Z for i = 1:az for j = 1:n-1 for k = 1:n-1 if (X(i) >= X_edges(j) & X(i) < X_edges(j+1) & ... Y(i) >= Y_edges(k) & Y(i) < Y_edges(k+1)) Z(j,k) = Z(j,k) + 1; end end end end %Plot surfc(X_edges,Y_edges,Z) xlabel('data X'); ylabel('data Y'); zlabel('Haeufigkeit'); % 3D Grafik: mesh subplot(2,2,2); %clf; x = logspace (0,1,11); z = x'*x; mesh (x, x, z, z.^2); set (gca, "zscale", "log"); xlabel "X-axis"; ylabel "Y-axis"; zlabel "log scale"; title ({"mesh() with color proportional to Z^2", "Z-axis is log scale"}); %try % if (strcmp (get (gcf, "__graphics_toolkit__"), "gnuplot")) % title ({"Gnuplot: mesh color is wrong", "This is a Gnuplot bug"}); % endif %catch %end_try_catch % 3D-Oberfläche: meshc subplot (2,2,3); colormap ("default"); [X, Y] = meshgrid (linspace (-3, 3, 40)); Z = sqrt (abs (X .* Y)) ./ (1 + X.^2 + Y.^2); meshc (X, Y, Z); title ("meshc() combines mesh/contour plots"); % Scatter 3D-Plot subplot(2,2,4) [x, y, z] = peaks (20); scatter3 (x(:), y(:), z(:), [], z(:)); \sourceoff *** Ende *** Danke fürs Lesen sagt Ronald
\(\endgroup\)
Get link to this article Get link to this article  Printable version Printer-friendly version -  Choose language     Kommentare zeigen Comments  
pdfFür diesen Artikel gibt es keine pdf-Datei


Arbeitsgruppe Alexandria Dieser Artikel ist nicht im Verzeichnis der Arbeitsgruppe Alexandria eingetragen.
[Die Arbeitsgruppe Alexandria katalogisiert die Artikel auf dem Matheplaneten]

 
 
Aufrufzähler 592
 
Aufrufstatistik des Artikels
Insgesamt 20 externe Seitenaufrufe zwischen 2022.08 und 2022.12 [Anzeigen]
DomainAnzahlProz
https://google.com945%45 %
https://google.de945%45 %
http://www.hjcaspar.de210%10 %

Aufrufer der letzten 5 Tage im Einzelnen
Insgesamt 3 Aufrufe in den letzten 5 Tagen. [Anzeigen]
DatumAufrufer-URL
2022.11.02-2022.12.05 (3x)https://google.com/

Häufige Aufrufer in früheren Monaten
Insgesamt 15 häufige Aufrufer [Anzeigen]
DatumAufrufer-URL
202210-10 (9x)https://google.de/
202208-09 (6x)https://google.com/

[Top of page]

"Werkzeuge: Octave: 2D- und 3D-Grafik - ein paar Beispiele" | 7 Comments
The authors of the comments are responsible for the content.

Re: Octave: 2D- und 3D-Grafik - ein paar Beispiele
von: julian-apostata am: Sa. 27. August 2022 13:43:25
\(\begingroup\)Wie würden eigentlich Cremona's Fadenspiele in Octave funktionieren? https://www.spektrum.de/KaustikAnim/ani.htm#cre In Geogebra geht's am einfachsten, wenn man Polarkoordinaten verwendet. α=360°/97 r=5 m=2 Zip[Strecke[(r; n α), (r; m n α)], n, 0…96] Wer's selber probieren möchte, kann's auch online tun. https://www.geogebra.org/classic \(\endgroup\)
 

Re: Octave: 2D- und 3D-Grafik - ein paar Beispiele
von: Delastelle am: So. 28. August 2022 06:04:49
\(\begingroup\)Hallo julian-apostata! das mit den Bildern in Octave kann ich mal probieren. Ergänzung zum Artikel - es gab 2 Probleme: - statt if (a == 1) & (b == 2) besser if (a == 1) && (b == 2) verwenden - irgendwo bei pie / pie3 war eine Fehlermeldung bei der älteren Ocatve Version war es kein Fehler Viele Grüße Ronald Edit: https://www.matheplanet.de/matheplanet/nuke/html/uploads/b/15578_FAD299.gif (Grafik 1 von Spektrum) https://www.matheplanet.de/matheplanet/nuke/html/uploads/b/15578_Kommentar1_Experiment1.gif (ein Octave Experiment mit Fäden) Quelltext dazu \sourceon Octave hold on x = 0; for n = 0:1/97:1 x = n*(2*pi); y = n; % Zip[Strecke[(r; n ), (r; m n )], n, 096] s1 = cos(x)+y*0.1; s2 = 1; z1 = 1+cos(x); z2 = 1+sin(x); line([s1,z1],[s2,z2]) end \sourceoff Momentan ist mir nicht klar wie der 1.Punkt der Linie erzeugt wird. Deshalb sieht mein Bild auch anders aus... Edit: mit Hilfe: https://www.matheplanet.de/matheplanet/nuke/html/uploads/b/15578_Faden2.gif siehe https://www.matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=259908&start=0&lps=1887400#v1887400\(\endgroup\)
 

Hallo Ronald, ich stelle die Hypothese auf, dass Orbitale dreidimensionale Schnitt
von: Roland17 am: Fr. 07. Oktober 2022 12:46:54
\(\begingroup\)Hallo Ronald, ich stelle die Hypothese auf, dass Orbitale dreidimensionale Schnitte von Schwingungen im vierdimensionalen Raum sind. Dies würde ich gerne durch zweidimensionale Schnitte von dreidimensionalen Schwingungen veranschaulichen. Ich habe zwar schon in Algol 60 und Basic programmiert, komme aber mit den modernen Programmiersprachen und 3D-Zeichenprogrammen (noch) nicht zurecht. Hier folgt die Darstellung einer zweidimensionalen Schwingung, wobei auf der x-Achse Muster auftreten, die Orbitalen entsprechen: https://matheplanet.de/matheplanet/nuke/html/uploads/b/47769_17.jpg Entsprechend müsste es dreidimensional aussehen. Mir schwebt vor, die dreidimensionale Schwingung durch die einfache Eingabe von Funktionsgleichungen modellieren zu können, bis passende Schwingungsmuster - wie z.B. Cladnische Klangfiguren - entstehen. In einem nächsten Schritt müssten die Schwingungen vierdimensionaler Vektoren dreidimensional geschnitten und gezeichnet werden (wobei die Zeit als 5. Dimension hinzukommt). Könntest Du mir eventuell helfen? Roland \(\endgroup\)
 

Hallo Roland! Ich glaube es wäre gut im Forum eine Diskussion zum Thema zu starten
von: Delastelle am: Fr. 07. Oktober 2022 14:24:55
\(\begingroup\)Hallo Roland! Ich glaube es wäre gut im Forum eine Diskussion zum Thema zu starten. Dann können andere und ich sich daran versuchen! Viele Grüße Ronald Edit: eine einfache Idee zur Darstellung höherdimensionaler Objekte ist das Weglassen einer Komponente. Z.B. Ich habe 3 dimensional ein Haus im CAD. Dann kann ich mittels Zweitafelprojektion statt die xyz die xy, xz und yz Punkte darstellen - eine Dimension wird immer weggelassen. Ob diese Idee hilfreich ist, kann ich nicht sagen.\(\endgroup\)
 

Re: Octave: 2D- und 3D-Grafik - ein paar Beispiele
von: Roland17 am: So. 09. Oktober 2022 12:23:20
\(\begingroup\)Danke, Ronald, ja, daran habe ich bei vierdimensionalen Schwingungen auch gedacht. Vorher wäre es aber wohl sinnvoll, dreidimensionale Schwingungen und ihre zweidimensionalen Projektionen zeichnerisch und anschaulich darzustellen, um einen Überblick über die Möglichkeiten zu erhalten. Gruß Roland\(\endgroup\)
 

Re: Octave: 2D- und 3D-Grafik - ein paar Beispiele
von: Roland17 am: Mo. 10. Oktober 2022 17:11:27
\(\begingroup\)Hallo Ronald, ich habe "octave" heruntergeladen und stelle fest, dass das "Helix"-Teilprogramm genau das ist, was ich für den Anfang brauche - habe auch schon eine erste Variante der Helix erzeugt. Bei dem Teilprogramm davor, zum Sinusoid, kommt eine Fehlermeldung. Offenbar fehlt für z das Argument. Probiere es bitte und schicke die Korrektur. Viele Grüße Roland \(\endgroup\)
 

Re: Octave: 2D- und 3D-Grafik - ein paar Beispiele
von: Delastelle am: Mo. 10. Oktober 2022 21:32:28
\(\begingroup\)Hallo Roland! Hier noch mal der Code von oben: \sourceon Octave % normaler 3D-Druck plot3 subplot(2,2,1) z = [0:0.05:5]; plot3 (cos (2*pi*z), sin (2*pi*z), z, ";helix;"); plot3 (z, exp (2i*pi*z), ";complex sinusoid;"); \sourceoff z ist definiert; wenn man das Semikolon nach z wegläßt, wird z angezeigt; falls Du nur dies plotten möchtest, kannst Du das subplot weglassen. Viele Grüße Ronald \(\endgroup\)
 

 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]