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.
Ninguna de las personas mencionadas arriba parece haber encontrado el verdadero meollo del problema.
La razón de este error es que la lectura boy.jpg 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 ellas puede ser un escalar).
Observando la intención del código del cartel, debería ser que quiere mostrar el contenido de un área cuadrada en el medio de la imagen y establecer el resto en negro. Esto se puede hacer de dos maneras.
1. Según la visualización de la imagen en color real, b también debe definirse como una matriz tridimensional: i=imread('boy.jpg'); =im2doble(i);
b=zeros(tamaño(i));
b(50:150, 50:150,:)=1;
n=b. *i;
imshow(n)
2. Si lo hace como una matriz bidimensional, necesita convertir la imagen en una imagen en escala de grises. : i=imread('niño.jpg' );
i=rgb2gray(i
i=im2double(i); (tamaño(i, 1), tamaño( i, 2));
b(50:150,50:150)=1;
n=b.*i;
imshow(n )
Nota:
1. Ambos métodos deben usar la multiplicación de puntos (.*) en lugar de la multiplicación de matrices (*).
2. Las dos frases correspondientes al segundo método de asignar un valor a la variable b también se pueden utilizar con las dos frases correspondientes al primer método, con el mismo efecto.