Can't use mtimesx, "A C/C++ compiler has not been selected"
8 ビュー (過去 30 日間)
古いコメントを表示
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?
採用された回答
Matt J
2020 年 9 月 12 日
編集済み: Matt J
2020 年 9 月 12 日
Run mex- -setup from the Matlab prompt,
>> mex -setup
and select one of the available compilers.
7 件のコメント
Matt J
2020 年 9 月 12 日
編集済み: Matt J
2020 年 9 月 12 日
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]);
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!