16
$\begingroup$

I was wondering if Mathematica has an equivalent of MATLAB's "MATLAB Builder" as seen here?

I found this but it reads as if all programs using .NET/Link must have Mathematica installed on them as well.

I have several systems to replicate and it would be impossible to have Mathematica installed on all 25-1000 computers.

Thanks!

EDIT

Additional Information:

I use C# applications to control various systems and I would like to use a bunch of Mathematica's functions (interactive plots, optimization, statistical analysis, etc.) within them. From the link, MATLAB's "MATLAB Builder" can create assemblies of user designed functions/scrips for standalone use in C#/.NET applications (i.e. MATLAB isn't required on the deployment PCs for the MATLAB assembly functions to run). I'm looking for a Mathematica equivalent.

$\endgroup$
5
  • $\begingroup$ Maybe it will be a surprise in the next release ! $\endgroup$ Sep 21, 2012 at 17:36
  • $\begingroup$ Thought about CDF? $\endgroup$ Sep 21, 2012 at 17:49
  • $\begingroup$ Ah, sounds like a no then? @SjoerdC.deVries, can you expand on your comment? I generally use C# to control various systems and I would have liked to use a bunch of Mathematica's functions (interactive plots, optimization, statistical analysis, etc.) within them. Matlab's "Matlab Builder" looks like I can create m-file functions and build them into an assembly. I can include this assembly in a C# program and distribute it to any number of PCs and Matlab doesn't need to be installed. I've started to prefer Mathematica over Matlab and would like to be able to stick with a single package. $\endgroup$
    – john
    Sep 21, 2012 at 18:11
  • $\begingroup$ CDF, or Computable Document Format, is a document type launched by Wolfram Research. It can be used to make certain interactive Mathematica programs (basically programs running within a Manipulate or a DynamicModule environment). It runs either using a CDF player or in a browser using a CDF plugin. Most of Mathematica's functionality can be used there but there are restrictions, especially with respect to external connectivity. (...continued...) $\endgroup$ Sep 21, 2012 at 18:44
  • $\begingroup$ (...continued...) Given the description of your requirements in your comment (which you'd better include in your question) CDFs won't work for your specific area. $\endgroup$ Sep 21, 2012 at 18:44

2 Answers 2

16
$\begingroup$

AFAIK there is no equivalent to the Matlab builder (yet?). There are some similar functionalities but, as far as I understand and know, there is nothing that would perfectly match what you seem to need. For deploying functionality written in Mathematica for use from a C# program I see these three possibilities:

Deploy as Mathematica-Application (with GUI)

you can either deploy such programs as CDF-documents, which then can be run either with the CDF-Player or Wolfram Player Pro. You could also create a "normal" Mathematica application, which exclude the CDF-Player. Of course these will both also run with a full Mathematica. To run with the cost-free CDF-Player you'll usually need some extra effort and many realistic problems can't be solved within it as it for example can't import external data and has some other limitations. For Player Pro and CDF-Player the connectivity to your C# program would basically be limited to that you could start them from there, maybe passing some information to them via "tricks" like environment variables.

  1. Licensing: if you manage to supply the desired functionality as a free CDF-document no licenses are actually needed (but make sure to read the exact conditions). For Player Pro you have to buy licenses which have a reasonable pricing if you need only a couple of them, but if you need something like 1000 of them you'd have to contact WRI for a pricing (it is somewhat unclear whether they offer floating licenses for it or not). For a full Mathematica there are floating licenses, but of course these are quite expensive and only applicable if only a few of the 1000 computers will need your application at the same time.
  2. Deployment: you'll need to install a relatively large package (even the free CDF-Player basically is a full Mathematica without the documentation) on every computer to use this kind of application. This might or might not be a problem for you (or the responsible IT department).

Connect to Mathematica

For this to run you'd need a full Mathematica listening (neither CDF-Player nor Player Pro can be used like that). If you only need Kernel functionality, you could either connect to a local installed Kernel or have Mathematica installed only on a remote server and connect to that from your C# program, but you'll need special licensing for that (This is possible either by MathLink or e.g. web services, I'm not sure whether NETLink can connect to remote Kernels). For interactive plots -- which are front end functionality -- you'd need to have Mathematica installed and licensed on the target computer in any case. Of course you could instead write the interactivity within your application and only ask Mathematica to produce the graphics.

Compile Mathematica functions to Libraries via C

if the functionality you wrote can be compiled with Compile, you could create C-functions/libraries/executable from it (see the CCodeGenerator tutorial). These can in combination with a minimal "WolframRTL" library be used from other programs without the necessity of anything else installed or licensed on the target computer. This is the approach that I think comes closest to what MATLAB builder(s) provide but is probably not that automated (yet), it's all included with a regular Mathematica though. The main drawback of this approach is that of course the functionality that can be compiled is quite limited and explicitly excludes everything that you have mentioned to be of interest to you (and most of why anyone else would want to call Mathematica functionality in general)...

Note that I'm not with WRI and the above information could not be entirely correct or up to date. I would also fully support Cuboids suggestion that you should contact WRI and explain them what you need, maybe they'll have or create a good solution for you...

$\endgroup$
1
  • $\begingroup$ Interesting, I appreciate the very thorough answer. You were correct in that the last option (C Libs) would be what comes closest to my goal-- it's too bad all the functions I would like to incorporate are incompatible. :/ Unfortunately, I don't think the other options would be feasible due to the limitations you mentioned. Mathematica is a fantastic development tool but being able to use even a small, simple subset of its capabilities within the final software package would be incredible. I have contacted WRI and will report back with any interesting updates. Thanks again. $\endgroup$
    – john
    Sep 24, 2012 at 16:39
5
$\begingroup$

The solution which worked for us may not be practical for you, but we faced a similar scenario. However, we also knew that across all our users, the actual times that a call to MMA would be needed would be few and far between. The answer for us is a small pool of floating licenses for MMA.

That said, Wolfram were very helpful, and for a large scale deployment such as you need, just contact them - I found they instantly understood the problem and were willing to explore lots of workable solutions.

$\endgroup$
0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.