Ich denke Matrizenmultiplikation muss man nicht immer noch einmal coden und evtl. helfe ich hier ja auch jemandem der gerade auf dem Schlauch steht und diese Methode benutzen möchte…

Matrix + Matrix

private static double[][] add(double[][] matrix1, double[][] matrix2){
        //TODO sanitisation check	
	double res[][] = new double[matrix1.length][matrix1[0].length];
	for(int i = 0; i < matrix1.length; i++){
		for(int j = 0; j < matrix2[0].length; j++){
			res[i][j] = matrix1[i][j] + matrix2[i][j];
		}
	}
	return res;
}

 

Matrix * Wert:

private static double[][] multiply(double[][] matrix, double value){
        //TODO sanitisation check
	double[][] res = new double[matrix.length][matrix[0].length];
	for(int i = 0; i < matrix.length; i++){
		for(int j = 0; j < matrix[i].length; j++){
			res[i][j] = (double) matrix[i][j] * value;
		}
	}
	return res;
}

 

Matrix * Spaltenvektor

private static double[] multiply(double[][] matrix, double[] vector){
        //TODO sanitisation check
	double res[] = new double[matrix.length];
	double sum;
	for(int i = 0; i < matrix.length; i++){
		sum = 0;
		for(int j = 0; j < matrix[i].length; j++){
			sum += (double) matrix[i][j] * vector[j];
		}
		res[i] = sum;
	}	
	return res;
}

 

Matrix * Matrix

private static double[][] multiply(double[][] matrix1, double[][] matrix2){
        //TODO sanitisation check
	double res[][] = new double[matrix1.length][matrix2[0].length];
	double sum;
	//i = row  matrix 1
	//j = column matrix 2
	//k = row matrix 2
	for(int i = 0; i < matrix1.length; i++){
		for(int j = 0; j < matrix2[0].length; j++){
			sum = 0;
			for(int k = 0; k < matrix2.length; k++){
				sum += (double) matrix1[i][k] * matrix2[k][j];
			}
			res[i][j] = sum;
		}
	}
	return res;
}

Das letzte Snippet sollte am Anspruchvollsten sein, aber ein paar Gedanken später auch kein Problem sein...

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.