Ergebnisse einer for-Schleife in Matrix speichern und darstellen

Neue Frage »

Bernd_1234 Auf diesen Beitrag antworten »
Ergebnisse einer for-Schleife in Matrix speichern und darstellen
Hallo

Verweg bin ich blutiger Matlab-Neuling. Aber versuche grad ein "Programm" zu schreiben, indem zwei Schleifen ein xy-Raster abfährt und dabei jeweils 2 z-werte berechnet.

Code:
a = 20;
b = 1;

for x = -a:b:a;

for y = -a:b:a;
z1 = Berechnung...
z2 = Berechnung...

end
end



Die beiden separaten z-Werte sollen mit den jeweiligen x - und y- Werten zwischengespeichert werden und nach ablauf der Schleifen, als mesh oder surf angezeigt werden.
Ich konnte schon einen plot3 erzeugen indem ich die Punkte bei jedem Schleifendurchlauf direkt zeichnen ließ, aber diese Lösung war nicht sehr 'elegant' und 'unschön'.

Bin am verzweifeln, weil nix mehr klappt. Wäre super, wenn mir jemand weiterhelfen könnte.

Vielen Dank voraus.

gruss Bernd
Airblader Auf diesen Beitrag antworten »

Zwei Dinge vorweg:

  • Für Code, bitte verwende die [ code ]-Tags, so dass z.B. auch die Einrückung korrekt angezeigt wird.
  • Wir leben nicht mehr in den Zeiten, in denen jeder Byte gezählt hat. Du machst dir und anderen das Leben leichter, wenn du Variablen einen passenden Namen gibst.


code:
1:
2:
3:
4:
5:
6:
7:
range = 20;
step = 1;

for x = -range : step : range
    z1 = ...;
    z2 = ...;
end;


Zur Sache: Die erste Frage, die sich aufdrängt, ist: Was funktioniert denn eigentlich nicht? Das Plotten? Was hast du denn schon versucht?

Übrigens: Matlabs größte Stärke ist das Arbeiten mit Matrizen. Schleifen sind im Vergleich extrem langsam und sollten wenn möglich durch eine vektorisierte Variante ersetzt werden:

code:
1:
2:
[X, Y] = meshgrid( -range:step:range, -range:step:range );
Z = X .* exp( X.^2 - Y.^2 );


Plotten lässt sich das zum Beispiel mit

code:
1:
surf( X, Y, Z );


air
 
 
Bernd_1234 Auf diesen Beitrag antworten »

Danke für die Rückmeldung.

Ich habs jetzt soweit bekommen, dass ich mehrere Matrizen (mit 3 Spalten für x y z) erstellen kann. Diese Matrizen sind in 'data' abgelegt.

Nur wie kann ich diese dann im Koordinatensystem darstellen?


mit
code:
1:
mesh(data(:1:),data(:2:),data(:3:))


erstellt er mir nur ein leeres Koordinatensystem und bei surf(...) bringt er mir eine Fehlermeldung.

Muss man bei der Schreibweise noch was sonderlich beachten?


gruss bernd
Airblader Auf diesen Beitrag antworten »

Zitat:
Original von Bernd_1234
bei surf(...) bringt er mir eine Fehlermeldung.


Hilfreich wäre es, wenn du uns auch sagst, welche Fehlermeldung das ist. Augenzwinkern

Ich habe leider keine Matlab-Lizenz mehr und es ist schon eine Weile her, dass ich damit gearbeitet habe. Allerdings sieht

code:
1:
data(:1:)


reichlich komisch aus, sofern ich da nicht irgendwelche Neuerungen verpasst habe (ist das überhaupt gültige Syntax?). Vielleicht versuchst du es mal besser mit

code:
1:
mesh( data( :, 1 ), data( :, 2 ), data( :, 3 ) );


(Ausgehend davon, dass data wirklich drei Spalten besitzt, die jeweils x-, y- und z-Wert enthalten, d.h. eine Zeile repräsentiert einen Punkt).
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »