Das Deutsche Casio-Taschenrechner Forum wurde zum 31.12.2013 geschlossen und kann weiterhin als Nachschlagewerk verwendet werden.
Wer mehr erfahren möchte: Ein sehr guter Beitrag von Elias

Matrizen trennen und zusammenfügen (SubMat)

Das Forum für die algebrafähigen Taschenrechner, wie AFX 2.0 und AFX 1.0

Matrizen trennen und zusammenfügen (SubMat)

Beitragvon Simon X » Di 13. Nov 2007, 18:32

Hi,
nach längerer Zeit habe ich mal wieder eine Frage bezüglich des AFX 2.0 Plus:

Ich habe ein Programm/Spiel entwickelt, das mit acht Matrizen und den meisten Variablen arbeitet. Jetzt will ich eine Speicherfunktion einbauen, dazu aber nicht alle Variablen und Matrizen so stehen lassen (damit man zwischen Speichern und Laden noch ein wenig was ohne Speicherdatenverluste mit dem GTR machen kann).

Deswegen ist klar, dass ich die Variablen alle in eine Matrix packe und beim "Laden" dann wieder "auspacke". Jetzt denke ich aber, dass es viel praktischer wäre, wenn die dann neun Matrizen in einer anderen abgespeichert werden, so dass ich im Endeffekt als Speicherdaten nur noch eine Matrix hätte.

Zum Zusammenfügen von Matrizen benutzt man soweit ich jetzt weiß den Augment-Befehl, welchen benutzt man aber zum Trennen der Matrix? In der Anleitung steht der Befehl "SubMat", den ich auf meinem Taschenrechner allerdings nicht finde/der nicht existiert. Deshalb frage ich mich, wie der Befehl eigentlich heißen sollte oder ob es eine alternative Variante dazu gibt.

Außerdem frage ich mich, ob das ganze Verfahren sonderlich sinnvoll ist, da zudem das Problem gegeben ist, dass die Matrizen bei dem Augment-Befehl gleich groß sein müssen, was nicht gegeben ist, so das ich dort auch noch etwas ändern müsste.

Also: Gibt es noch eine andere Möglichkeit zum Komprimieren seiner zu speichernden Daten (Matrizen, Variablen) oder haltet ihr das für komplett sinnfrei? ;)

Danke im Voraus :p
Simon X
 

Re: Matrizen trennen und zusammenfügen (SubMat)

Beitragvon CalcFürX-beliebige » Di 13. Nov 2007, 21:11

Also den SubMat-Befehl kenne ich nicht.

Nun aber zu deinem eigentlichen Problem:
Du verwendest acht (!) Matrizen ?
Die einzelnen Matrizen jetzt zu zerpflücken und wieder zusammenzufügen ist äußerst mühselig.
Es ist auch ohne Weiteres möglich nur eine Matrix zu verwenden.
Bei einem Spielfeld könnte man es vielleicht noch verstehen, aber acht ?

Du hättest von Anfang an deinen Speicher "sauberer" verwalten sollen, aber nun gut ...
Also sofern du nicht jedes Matrix-Element einzeln extrahieren willst, bleibt ja nur eine Möglichkeit übrig. Du lädst eine Spalte in eine Liste (Mat->List), bringst sie auf eine entprechende Dimension und schiebst sie dann in die neue Matrix (List->Mat|Augment). Wenn du mit Zeilen arbeiten willst, musst du vorher natürlich noch transponieren (Trn).

Zum Vergrößern von Listen verweise ich auf [URL=http://www.casiocalc.org/SITE/outpages/?to=casdocs-collect&load_that=1]Caspros dynamische Listen[/URL].
Hier ein Code-Beispiel:
[code]
{1,2,3}->List 1
Dim List 1
Seq(List 1[X-(X>Ans)(X-Ans)],X,1,20,1)->List 1
[/code]
Alle neuen Elemente werden so mit dem letzten der ursprünglichen Liste initialisiert.
Wenn du die Elemente mit Nullen füllen willst, führst du danach entweder eine For-Schleife aus oder du rufst Seq() zweimal auf und fügst beim ersten Aufruf nur ein Element hinzu und füllst das mit Null.

Wie schon gesagt, ist ziemlich schwierig im Nachhinein da noch Ordnung zu schaffen. ;)

[EDIT] Obwohl ...
Kannst du mir sagen, ob folgender Code bei dir funktioniert:
[code]
{0}->List 1
1->List[2]
List 1
[/code]
Wenn automatisch ein weiteres Element angelegt wurde, dann kannst du das Vergrößern der Liste natürlich auch mit einer For-Schleife realisieren.


CalcFürX-beliebige
 

Re: Matrizen trennen und zusammenfügen (SubMat)

Beitragvon Simon X » So 18. Nov 2007, 18:20

So, tut mir Leid, dass ich mich jetzt erst melde, erstmal danke für deine Antwort. Aber nun zum Thema:

Zu Allererst muss ich sagen, dass ich gemerkt habe, dass meine eigentlichen zu speichernden Daten nur 5 Matrizen und einige Variablen sind, da die anderen vier Matrizen während des Spiels unveränderlich sind und ich sie so einfach aufs Neue laden kann.

Allerdings würde ich nicht gerne die Anzahl an Matrizen verkleinern, weil ich die schon weitestgehend so brauche. Und, du hast recht, es handelt sich um eine Matrix für ein Spielfeld, bzw. zwei, eines für die Beschaffenheit der Felder, eine für die Einheiten auf den Feldern. Weitere Matrizen sind die Daten für die beiden Spieler, ein Schadensdiagramm für die Einheiten und eines für deren Bewegungen...Naja. %)

Jetzt aber züruck zum "Problem". Ich füge die Matrizen jetzt mit Augment zusammen und zerlege sie mit List->Mat. Glücklicherweise hat keine meiner Matrizen mehr als 20 Zeilen und Spalten, so dass ich mit den Listen auskomme. Ich bin noch nicht ganz fertig (Habe aus fünf Matrizen und Variablen drei matrizen gemacht) und werde jetzt mal gucken, wie ich das weiterhin verkleinere.

Und nochmal zur SubMat, die Anleitung besagt folgendes:

Zitat:SubMat

Funktion: Übernimmt eine bestimmte Teilmatrix einer Matrix in eine neue Matrix.

Syntax: SubMat( Mat [, Anfangszeile] [, Anfangsspalte] [, Endzeile] [, Endspalte] [ ) ]

Beispiel Als neue Matrix zu generieren ist die Teilmatrix von Zeile 2, Spalte 2,
bis Zeile 3, Spalte 3 der folgenden Matrix:

1 2 3
4 5 6
7 8 9

• Falls Sie keine Endzeile und Endspalte angeben, werden alle Elemente von der
festgelegten Anfangszeile/spalte an bis zum Ende der Matrix übernommen.


[URL]http://www.casio-europe.com/de/downloads/manuals/sgr/ALGEBRA_FX2.0PLUS_FX1.0PLUS_Teil1_de.pdf[/URL]

Die können sich das doch nicht ausgedacht haben? Außerdem wäre der befehl ja nur logisch, so als Gegenteil zu Augment...

Naja, das nochmal als Überlegung, aber ich denke, dass ich das Ganze deienr Hilfe jetzt auch ohne SubMat hinkriege. ;)


[geändert von Simon X am [TIME]1195406492[/TIME]]
Simon X
 

Re: Matrizen trennen und zusammenfügen (SubMat)

Beitragvon CalcFürX-beliebige » So 18. Nov 2007, 20:19

Das ist ja ein sehr interessanter Befehl. Weiß jemand, ob es den auch beim ClassPad gibt ?
Die AFX-Serie wird ja scheinbar nicht mehr weiterentwickelt und in den fx-9860G wurde er auch nicht integriert. Schade.

Zitat:... es handelt sich um eine Matrix für ein Spielfeld, bzw. zwei, eines für die Beschaffenheit der Felder, eine für die Einheiten auf den Feldern.

Die beiden Werte könntest du doch mit Komma trennen und in eine Matrix packen. Ein bisschen Int und Frac und schon läuft die Sache.


CalcFürX-beliebige
 


Zurück zu Das Casio AFX Forum

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste