diff --git a/matrix.c b/matrix.c index 0d32065..bb1dd8e 100644 --- a/matrix.c +++ b/matrix.c @@ -168,18 +168,21 @@ Matrix multiply(const Matrix matrix1, const Matrix matrix2) { //Spalten1 müssen gleich zeilen2 sein! dann multiplizieren if (matrix1.cols == matrix2.rows){ Matrix multMatrix = createMatrix(matrix1.rows,matrix2.cols); + //durch neue matrix iterieren for (int r=0; r< matrix1.rows; r++){ for (int c=0; c< matrix2.cols; c++){ MatrixType sum = 0.0; + //skalarprodukte berechnen, k damit die ganze zeile mal die ganze spalte genommen wird quasi for (int k=0; k< matrix1.cols; k++){ sum+= matrix1.buffer[r*matrix1.cols+k]*matrix2.buffer[k*matrix2.cols+c]; } + //Ergebnisse in neue matrix speichern multMatrix.buffer[r*multMatrix.cols+c] = sum; } } return multMatrix; } - //sonst fehler + //sonst fehler, kein multiply möglich else{ Matrix errorMatrix = {0, 0, NULL}; return errorMatrix;