Matrix multiplikation



  • Moin,

    ich habe ein großes problem mit einer matrix multiplikation. ich soll 2 3x3 matrizen miteinander multiplizieren. addition und subtraktion war recht easy, bei der multiplikation habe ich aber das problem ,das ich nicht so recht den faden finde um alle eingegebenen daten der matrixA und matrixB in die funktion für die multiplikation einzulesen.

    wie kann ich eine komplett befüllte matrix einer funktion übergeben und wie gebe ich eine komplett befüllte matrix aus einer funktion zurück ???

    gruss

    sponty



  • Man sollte Dich am besten nach "Mathematik"
    http://www.c-plusplus.net/forum/viewforum-var-f-is-43.html
    verschieben...



  • wie die matrix berechnet wird ist mir schon klar, nur wie ich das in C++ anstelle nicht.

    C00=A00*B00+A01*B10+A02*B20
    C01=.....



  • Der Code sieht doch gut aus... was willst Du noch wissen?
    Du musst doch schon eine Datenstruktur oder Klasse für die Matrix haben, oder?



  • mein problem ist wie ich die nötigen 6 werte auf einfache weise in die funktion bekomme, oder am besten einfach die kompletten matrizenwerte umd die ergebnismatrix komplett in einer funktion zu berechnen.

    das was ich im moment gerade gemacht habe ist die matrix zu zerlegen und alle 6 benötigten werte einzelnd an die funktion zu übergeben. welche das ind würde ich weiter mit einer switchanweisung vorher definieren. eine gute lösung ist das aber nicht und befriedigen tut sie mich ehrlich gesagt auch nicht.

    int matrixMul(int wertA, int wertB, int wertC, int wertD, int wertE, int wertF)
    {
    int ergebnis;
    ergebnis=wertA*wertB+wertC*wertD+wertE*wertF;
    return ergebnis;
    };

    void main ()
    {

    cout << matrixMul(1,1,1,1,1,1); // reine beispielwerte für ein feld

    }



  • Definier dir doch eine Klasse für 3x3-Matrizen, die die Werte sammelt, dann kannst du die Multiplikation in einer dreifachen for()-Schleife abhandeln, nachdem du zwei Matrix-Objekte übergeben bekommen hast:

    Matrix operator*(const Matrix& l, const Matrix& r)
    {
      Matrix res;//Konstruktor initialisiert mit 0...0
      for(int x=0;x<3;++x) for(int y=0;y<3;++y) //Index über alle Werte der Zielmatrix
        for(int k=0;k<3;++k)
          res.at(x,y)+=l.at(k,y)*r.at(x,k);
      return res;
    }
    

    (at(x,y) liefert das Matrixelement in Spalte x,Zeile y)



  • klassen definieren sagt mir so erstmal garnix, genauso wie operator 😞

    ich werde dahingehend nochmal ein bissel googeln.

    danke erstmal für die hinweise.


Anmelden zum Antworten