MATLAB has lots of built-in functions that I can call, such as "sin" and "norm." However, some of MATLAB's built-in functions are part of different libraries that I cannot access directly. For example, the function "ssim" is part of MATLAB's image processing toolbox, so I cannot simply call "ssim" in my code and have it work.
How do I call built-in MATLAB functions that are in different libraries? Do I need to import the libraries somehow? If so, how do I do that? How do I do this for ssim specifically?
Thanks so much!
Type ver into the command window to see which toolboxes belong to the license you bought.
Any function of these installed toolboxes you can call normally, like the mentioned sin.
Sometimes, if you're lucky, you can find equivalent functions of otherwise expensive toolboxes at MATLAB File Exchange.
Related
I use MATLAB's makecform in a script. However, the script takes a while to run, so I want to run it on a server. On this server, I have Octave instead of MATLAB.
Octave cannot find the function makecform.
I Googled the problem and found that this is not implemented in Octave, but that was from a mailing list in 2013. Is there (now) an alternative function for makecform in Octave?
I cannot say about the alternatives but I can confirm that the function is not yet implemented.
the makecform function belongs to the image package from Octave Forge.
makecform is present in the missing functions list of the package. You can see the evidence for the same in this link.
If you have some idea about how to implement the function, feel free to contribute.
I have some code that plots triangles in MATLAB.
I need to be able to somehow execute this code from my C program which generates these points.
Is that possible? How can it be done?
Just a thought:
Can I somehow embed MATLAB code in C, so that it can compile on a C compiler?
The Mathworks site has full details; a demo video of calling the Matlab engine from C, and also the Matlab to C Compiler.
As mentioned previously by answerers, you can call a live copy of MATLAB from C via the MATLAB Engine interface.
If the end-product needs to be used where there is no live copy of MATLAB, you can deploy the application using MATLAB Compiler. However, MATLAB Compiler does not, as another answer has suggested, convert MATLAB programs into C code (and hasn't done for a few versions now). Instead, it archives and encrypts your MATLAB program, and packages it into an executable or shared library that executes against the MATLAB Compiler Runtime (shareable royalty-free). The executable or shared library can then be called from C.
Alternatively you could go the other way around, and call your C code from MATLAB, using either loadlibrary or MATLAB's MEX interface.
Update: As of release R2011a, you can also use MATLAB Coder to generate C code directly from a subset of the MATLAB language.
Look at this presentation about integrating MATLAB Algorithms in C or C++ Applications http://www.mathworks.com/videos/integrating-matlab-algorithms-in-c-or-c-applications-86431.html
I would like to know if there is any available Gaussian hypergeometric function (2F1 function) code for Matlab.
I perfectly know that in the newest Matlab releases there is the hypergeom function, but it works really slow.
Therefore I was wondering about the existance of any mex function or whatever similar code performing what hypergeom does.
I thank you all in advance for support.
Best regards,
Francesco
The GNU Scientific Library implements hypergeometric functions including 2F1. You shouldn't have too much trouble wrapping that inside a mex-file.
I expect you'll find other sources knocking around on the Internet too.
Do report back and let us know if it does work faster than the intrinsic function.
After googleing a bit in the Internet, I came up with this tool provided within the Mathworks File Exchange:
http://www.mathworks.com/matlabcentral/fileexchange/35008-generation-of-random-variates/content/pfq.m
It consists of 1900 distributions, and among them the Gaussian hypergeometric function 2F1.
Furthermore, it has better performances than the standard hypergeom function.
I have written a set of Matlab functions and I want to distribute it to few people for testing. But I do not want to reveal the source to them. All these people have matalb installed on their systems. So I don't want to make standalone executable from my functions. Ideally I want something like complied library files which the users can put in the matlab path & call the functions from their matlab prompt / matlab functions. Is it even possible ?
Edit: I have matlab compiler toolbox. But the users won't be having access to matlab compiler toolbox on their matlab.
The standard way is using pcode. Look in the docs and remember to keep a copy of the source code elsewhere!
Is there a way to get the mex file for a built-in MATLAB m- file? If yes, how? If no, does that mean I have to write the C code myself (oh nooo!!!)
The Matlab built-in functions are closed-source. Thus, you won't be able to get the code for them. It is possible to call Matlab functions from C code, though, if that solves your problem.
Depending on the function you want, you can find some of it elsewhere. For example, linear algebra operations are in LAPACK, and you may be able to get something from the source of OCTAVE.