How to use MATLAB coder when .m file calls a MEX file?

조회 수: 15 (최근 30일)
Quinten Rensen
Quinten Rensen 2018년 7월 6일
댓글: Quinten Rensen 2018년 7월 7일
Hi all,
To speed up my simulations, I am trying to convert my Matlab files to MEX files. Since I have only started working with MEX files recently, I am not quite sure about the following:
I have a function restr() which calls another function interp() that I have converted to a MEX file earlier:
function [R] = restr()
[I] = interp_mex();
R = I';
% Followed by some additional code that modifies R
end
When I try to convert this function using MATLAB coder, I get the error message that "only MATLAB files are supported for code generation". My questions now are:
  1. Of course I can use my non-converted function interp() instead of interp_mex(). When I use MATLAB coder to convert restr(), does it also convert the functions that are called within the file? So, is interp() also converted?
  2. If not, how can I convert MATLAB files that use MEX files?
Thank you for your time!
Kind regards, Quinten

채택된 답변

OCDER
OCDER 2018년 7월 6일
Of course I can use my non-converted function interp() instead of interp_mex(). When I use MATLAB coder to convert restr(), does it also convert the functions that are called within the file? So, is interp() also converted?
Yes, you should use the non-converted function interp() instead of interp_mex(). Yes, MATLAB coder will attempt to convert all dependent function, so restr() and interp() should be converted.
If not, how can I convert MATLAB files that use MEX files?
You can't, as Matlab Coder does not have a way to translate custom MEX files, and also, it's odd to do since it'll be like converting a c++ code to a c++ code.
If you have a lot of functions you want as MEX, then convert them all at once as purely matlab codes. If you want to build custom MEX file and you have a ton of reusable codes, then you could build a common c++ source code library, make c++ header file, and then use #include mylibrary.h in your MEX source codes.
//contents of myMEX.cpp
#include "mex.h"
#include "mylibrary.h"
void mexFunction(.....) {
... your code
}
//contents of mylibrary.h
#ifndef MYLIBRARY_H
#define MYLIBRARY_H
int add(int, int);
int subtract(int, int);
#endif
//contents of mylibrary.cpp
int add(int x, int y) { return (x + y); }
int subtract(int x, int y) { return (x - y); }
To compile, you'll need something like this
mex myMEX.cpp mylibrary.cpp

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB Coder에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by