Can't use mtimesx, "A C/C++ compiler has not been selected"
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Anton Loubman
el 12 de Sept. de 2020
Editada: Anton Loubman
el 13 de Sept. de 2020
r_mat = [1,0,0; 0,0,0; 0,0,0];
dog = im2double(imread('download.jpg'));
r_dog = mtimesx(dog, r_mat);
imshow(r_dog);
I wasn't sure how to set up the mtimesx function so I just copied all the files from the download into the directory where my script is located.
I try to run the above code but I get the error "A C/C++ compiler has not been selected with mex -setup". I installed the MinGW add-on and checked that it is the selected compiler.
How do I get the function mtimesx to work?
Respuesta aceptada
Matt J
el 12 de Sept. de 2020
Editada: Matt J
el 12 de Sept. de 2020
Run mex- -setup from the Matlab prompt,
>> mex -setup
and select one of the available compilers.
7 comentarios
Matt J
el 12 de Sept. de 2020
Editada: Matt J
el 12 de Sept. de 2020
Well it worked, sort of. For some reason it still refuses to multiply a 225x225x3 matrix by a 3x3 matrix
I can assure you that im2double has nothing to do with the problem. A 225x225x3 matrix is definitely not compatible for slice-wise multiplication with a 3x3 matrix, and I'm not sure why you think it is. It would be equivalent to trying to do this:
A=rand(225,225,3); B=rand(3,3);
for i=1:3, C(:,:,i)=A(:,:,i)*B; end %what C=mtimesx(A,B) is trying to do
If instead, you are trying to take every A(i,j,:), make it into a row vector, and pre-multiply the row vector by, then you don't need mtimesx for that. You would instead do,
C=reshape( reshape(A,[],3)*B , [225,225,3]);
Más respuestas (0)
Ver también
Categorías
Más información sobre MATLAB Support for MinGW-w64 C/C++ Compiler en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!