Can't use mtimesx, "A C/C++ compiler has not been selected"
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Anton Loubman
le 12 Sep 2020
Modifié(e) : Anton Loubman
le 13 Sep 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?
Réponse acceptée
Matt J
le 12 Sep 2020
Modifié(e) : Matt J
le 12 Sep 2020
Run mex- -setup from the Matlab prompt,
>> mex -setup
and select one of the available compilers.
7 commentaires
Matt J
le 12 Sep 2020
Modifié(e) : Matt J
le 12 Sep 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]);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur MATLAB Support for MinGW-w64 C/C++ Compiler dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!