Matrix transponieren

ToBe4minimal

Mitglied
Hallo Ihr Lieben,

ich hab ne Matrix die ich um 90 Grad drehen (transponieren) soll.

Hab jetzt alle Foren und das Internet durchgestöbert... aber finde immer nur das gleiche, nur, so funktioniert es nicht ganz...

Erstmal mein Code:
Code:
public class Matrix
{
    private int [][] elemente;
    private int [][] transponierte;

Ein Bequemlichkeitskonstruktor (hab verschiedene gemacht, unter anderem auch einen mit Zufallszahlen und son Kram und wo man die Anzahl der Zeilen und Spalten angeben kann, aber mit dem ist es erstmal am einfachsten):
HTML:
 public Matrix()
    {   
        elemente = new int [][]{{1,2},{3,4}};  
    }

So nun haben wir ein ganz kleines 2D Array.

Nun will ich das drehen.

Code:
 public void transponieren()
    {
        transponierte = new int [elemente.length][elemente[0].length];
        if(elemente.length == elemente[0].length)
        {
            for(int i=0;i<elemente.length;i++)
            {
                for (int j=0;j<elemente[i].length;j++)
                {
                    transponierte[j][i] = elemente[i][j];
                }
            }
        }
        else
        {
            System.out.println("Das Array ist nicht rechteckig!");
        }
    }


Das man dafür einfach en neues Array anlegt und ne verschachtelte for Schleife macht, ist klar, jedoch steht überall im Internet als Anweisung in der verschachtelten for Schleife nur:
Code:
transponierte[j][i] = elemente[i][j];


Und das alleine reicht definitiv nicht aus.

Aus

1 2
3 4

wird

1 3
2 4


Und dabei handelt es sich ja nicht um eine 90° Drehung...



Liebe Grüße
Tobi
 
Zuletzt bearbeitet:
Ist dem nicht so??

So wurde es mir erklärt von unserem Tutor...

In der Aufgabenstellung steht was von Matrix transponieren...

Und er erklärte es so, dass es sich dabei um eine 90 Grad Drehung des gesamten Arrays handelt...

Äh ja, die Transponierte erhälst du indem du die Ursprungsmatrix "bildlich gesprochen" um 90grad drehst. Hier besteht das Missverständnis, dass es sich um ein konstrukt aus der graphischen Datenverarbeitung handelt. Du sagst es nämlich so das man denken könnte du meinst eine 90 grad Drehung um einen Punkt, praktisch eine Abbildung...
 
Da hat man mir wohl was falsches erklärt??!!

Aufgabenstellung:
iv) Als transponierte Matrix wird die Matrix bezeichnet, deren Elemente so vertauscht wurden,
dass das Element mit dem Index i, j durch das Element mit dem Index j, i ersetzt wird. Dabei
wird die Matrix quasi um ihre Hauptdiagonale gekippt.


Wenn man die Aufgabenstellung so liest, scheint meine Lösung ja bereits doch richtig zu sein...

Sehe ich doch richtig, oder??

Aus

1 2
3 4

wird

1 3
2 4


Die Matrix wird um die Hauptdiagonale gekippt.

Stimmt doch, oder??
 
wenn man sie im Raum dreht, sind es aber 180 Grad 😉
ein Buch umklappen,
naja Wikipedia sagt alles, den Link zu ignorieren sagt auch etwas

edit:
> Die Matrix wird um die Hauptdiagonale gekippt.

> Stimmt doch, oder??

durchaus
 
Äh ja, die Transponierte erhälst du indem du die Ursprungsmatrix "bildlich gesprochen" um 90grad drehst. Hier besteht das Missverständnis, dass es sich um ein konstrukt aus der graphischen Datenverarbeitung handelt. Du sagst es nämlich so das man denken könnte du meinst eine 90 grad Drehung um einen Punkt, praktisch eine Abbildung...

Er erklärte es so, dass aus

1 2
3 4

3 1
4 2

werden müsste.
Jedenfalls hatte ich es so verstanden.
Das entspräche für meine Begriffe einer 90° Drehung der gesamten Matrix.


Die Aufgabenstellung besagt meiner Ansicht nach aber etwas anderes.
 
soweit ich es zu dem Zeitpunkt beurteilt habe, was nicht richtig sein muss,
siehe z.B. noch das Posting nach meinem vorherigen, falls du das nicht sowieso schon machst und alles einzeln beantwortest 😉
 
soweit ich es zu dem Zeitpunkt beurteilt habe, was nicht richtig sein muss,
siehe z.B. noch das Posting nach meinem vorherigen, falls du das nicht sowieso schon machst und alles einzeln beantwortest 😉

Ja sorry, ich mache das, damit es noch verständlich bleibt.


Doch, ich glaube wir verstehen uns richtig und ich glaube ich habe es auch richtig.

Die Aufgabenstellung ist ja folgende:
iv) Als transponierte Matrix wird die Matrix bezeichnet, deren Elemente so vertauscht wurden,
dass das Element mit dem Index i, j durch das Element mit dem Index j, i ersetzt wird. Dabei
wird die Matrix quasi um ihre Hauptdiagonale gekippt.


Mein Code macht mit meiner Matrix folgendes:

Aus

1 2
3 4

wird

1 3
2 4


Also für meine Begriffe sollten wir genau das tun.
 
dann passe wenigstens noch die Fehlermeldung an:
> System.out.println("Das Array ist nicht rechteckig!");

ein Array ist quasi immer rechteckig, alles andere ließe sich aus einem einfachen Vergleich gar nicht feststellen,
du meinst hier quadratisch oder nicht?

ob nicht-quadratische auch funktionieren sollen ist ja gerade der Punkt,
wenn du willst versuche das auch als Eingabe, dürften nur noch kleine Änderungen nötig sein, dann ginge das auch
 
dann passe wenigstens noch die Fehlermeldung an:
> System.out.println("Das Array ist nicht rechteckig!");

ein Array ist quasi immer rechteckig, alles andere ließe sich aus einem einfachen Vergleich gar nicht feststellen,
du meinst hier quadratisch oder nicht?

ob nicht-quadratische auch funktionieren sollen ist ja gerade der Punkt,
wenn du willst versuche das auch als Eingabe, dürften nur noch kleine Änderungen nötig sein, dann ginge das auch


Ja ich weiss, dass diente praktisch erst einmal als Platzhalter.

Ich bin mir sogar sicher, dass nicht quadratische auch funktionieren sollen.

Ich überlege gerade, was ich in diesem Fall anders machen muss. 😉
 

Zurück
Oben