Question

I developed a MATLAB function, and I'm looking for a way to call that function from another C# application and pass some parameters to it and get the results in the C# program.

I heard that I can use Dynamic Data Exchange (DDE) or COM objects, but have can I do it?

Was it helpful?

Solution

There is nice example in the MATLAB Central.

It shows three ways on how to communicate with MATLAB:

  1. COM
  2. MATLAB .NET Bulider
  3. MATLAB compiler

COM (I do not have any experience with it)

Cons: MATLAB is required to be installed on the target computer.

MATLAB .NET builder compiles your MATLAB code to the .NET assembly and you can use it directly.

Pros: MATLAB is not required to be installed on the target computer

Cons: It's expensive

MATLAB compiler compiles your MATLAB code into a C/C++ library or EXE file. You can use it through P/Invoke.

Pros: MATLAB is not required to be installed on the target computer

Cons: It's expensive, a lot of P/Invoke.

OTHER TIPS

There is a third option: delegates. Starting MATLAB -> load .NET assembly -> execute .NET function with delegate handle to a MATLAB function.

There is a great example on this site on setting up everything. You can use MATLAB .NET deployment tool.

You need to

  • Install MCR (Matlab Compiler Runtime).
  • Deploy your Matlab function to .NET Assembly using Matlab Deploy Tool. This will create a .dll file.
  • Add .dll reference inside your .NET project.
  • Add reference to MATLAB.NET.

The advantage of this method is that the target machine does not require MATLAB to be installed, but on the downside the execution is quite expensive.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top