Problema de multiplicación de matrices de Matlab, ¿qué salió mal? Como se muestra a continuación, el mensaje de error está a la izquierda y el código fuente está a la derecha.
La razón de este error es que el archivo boy.jpg leído es una imagen en color verdadero, por lo que la I correspondiente es una matriz tridimensional y la multiplicación de matrices (*) solo se puede realizar en dos de dos dimensiones. matrices dimensionales (una de las cuales puede ser escalar).
El propósito de mirar el código del póster original debe ser mostrar el contenido de un área cuadrada en el medio de la pantalla y establecer el resto en negro. Esto se puede lograr de dos maneras.
1. Según la visualización de la imagen en color verdadero, b también debe definirse como una matriz tridimensional:
I = im read(' boy . jpg ');
I = im2 doble(I);
b = cero(tamaño(I));
b(50:150, 50:150,) = 1;
n = b . * I;
Visualización instantánea (n)
2. en una imagen en escala de grises:
I = im read(' boy . jpg ');
I = RGB 2 grey(I
I = im2); doble(I);
b = cero(tamaño(I, 1), tamaño(I, 2)); ;
n = b . * I;
Visualización instantánea (n)
Nota:
1, ambos métodos requieren multiplicación de puntos. (. *) en lugar de multiplicación de matrices (*).
2. Las dos oraciones que asignan un valor a la variable B en el segundo método también se pueden usar en las dos oraciones correspondientes al primer método, y el efecto es el mismo.