Ir al contenido

Multiplicar matriz por vector columna en Java

Para conseguir multiplicar matriz por vector columna en Java nos puede servir sencillamente el ejemplo de como multiplicar matrices asegurándonos que una de las matrices tiene una sola columna.

int[][] vectorColumna = { {1}, {2} };

De esta sencilla forma habríamos conseguido multiplicar matriz por vector columna en Java.

int[][] resultado = multiplicarMatrices(matriz, vectorColumna);

Recuerda revisar la clase Matriz.java la cual contiene todos los ejemplos de manipulación de matrices de Línea de Código.

Pero sabemos que en Java hay otra forma de representar los Vectores para almacenar los elementos, las cuales no nos implique crear un array bidimensional. Por ejemplo podemos tener un simple array para representar el vector columna.

int[] vectorColumna = {1, 2};

Así que ahora para conseguir multiplicar matriz por vector lo que haremos será multiplicar un array bidimensional por un array.

Vayamos paso a paso. Vamos a guardarnos los valores de los tamaños de filas y columnas.

int filasMatriz = matriz.length;
int columnasMatriz = matriz[0].length;
int columnasVector = 1;
int elementosVector = vectorColumna.length;

Vemos que en el caso del vector las columnas es igual a 1.

Ahora tenemos que comprobar que el número de columnas de la matriz coincide con el número de elementos del array. Como ya lo habíamos guardado en las variables tenemos que:

if (columnasMatriz != elementosVector) {
System.out.println("No se puede multiplicar");
return;
}

La matriz resultado será del número de filas por una columna.

int[] resultado = new int[filasMatriz];

Lo siguiente será ya pasar al bucle de multiplicación. Hay que recordar que para multiplicar matrices deberemos de utilizar tres bucles anidados. Los dos primeros nos dan la posición del resultado en la matriz destino.

for (int x=0; x < filasMatriz; x++) {
resultado[x] = 0;
}

El tercer bucle es el que multiplica la fila por la columna. En este caso la fila por cada uno de los elementos del array y los va sumando para dejar en la posición de la matriz.

for (int x=0; x < filasMatriz; x++) {
for (int y=0; y < columnasMatriz; y++) {
resultado[x] += matriz[x][y] * vectorColumna[y];
}
}
Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Multiplicar matriz por vector columna en Java

Ejemplo que nos muestra como podemos multiplicar matriz por vector columna en Java utilizando la multiplicación de un array por un array bidimensional.

Descargar código
Pon a prueba tu conocimiento
Arrays en Java

¿Cuál de las siguientes opciones inicializa correctamente un array de String con 3 elementos?

  • A String[] nombres = {"Ana", "Luis", "Carlos"};
  • B String nombres[] = new String[3] {"Ana", "Luis", "Carlos"};
  • C String nombres = ["Ana", "Luis", "Carlos"];
  • D String[] nombres = new String(3);