Sept 02 - Matrixmultiplikation

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Sept 02 - Matrixmultiplikation
Kann mir jemand sagen, warum bei mir immer irgendwo ein ArrayIndexOutOfBoundsException auftritt?

Hat sich schon erledigt, Fehler ausgemerzt.


Also wenn ich das grob überfliege versteh ich da nicht so viel, aber du nimmst ja A(m,n) * B (i, j) = C(n, i) wobei n=i sein muss.

Bei dir steht:

    if(a.length != b[0].length) return null;

was ja eigentlich ist:

   if (m != j) ret null;

was widerum nur stimmt, wenn du die Matrizen andersrum siehst (was ich aber nicht machen würde, da kommst du durcheinander… Zumindest komm ich da durcheinander…)

Ausserdem würd ich bei Arrays die Zähler immer bei 0 starten lassen, das Array fängt ja auch bei 0 an.

[Edit] Du Arsch! Kaum bin ich fertig, hast du deinen Thread schon wieder gelöscht :cry:


Sorry, kann dir mal meine fertige Methode posten.


public static double[][] mM(double[][] a, double [][] b){
		if(a.length != b[0].length){
			return null;
		}
		else{
			int k = a.length;
			int m = a[0].length;
			int n = b.length;
			double sum;
			double[][] au = new double[n][m];
			for(int i = 1; i <= n ; i++){
				for(int j = 1; j <= m; j++){
					sum = 0;
					for(int x = 1; x <= k; x++){
						sum += a[x-1][j-1] * b[i-1][x-1];
					}
					au[i-1][j-1] = sum;
				}
			}
			return au;
		}
	}

Das Problem ist dass man sich da wirklich leicht vertut, wenn man die Funktion abschreibt, bakommt man irgendwann nen IndexOutOfBoundsException, weil (wie du sagtest) man auf eine Array Matrix mit arr[y][x] zugreift, wenn man das x,y Element haben will.


Naja, immerhin hab ich auch mal was gewusst :smiley: