C#引擎方式调用Matlab,每次都创建新的实例,而不是引用其他已存在的对象

时间:2022-08-30 17:37:42
最近用C#调用Matlab引擎,因为两段M代码没有关联,想同时启动两个Matlab引擎同时执行,代码如下:
            MLApp.MLApp matlab = null;
            MLApp.MLApp matlab1 = null;
            Type matlabAppType = System.Type.GetTypeFromProgID("Matlab.Application");
            matlab = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;
            matlab1 = System.Activator.CreateInstance(matlabAppType) as MLApp.MLApp;
            string command;
            command = "”;
            matlab.Execute(command);
            matlab1.Execute(command);
问题来了,如果电脑后台进程存在Matlab,那么这段程序就不会创建Matlab的实例,而是直接引用到了已存在的对象,如果我想每次System.Activator.CreateInstance的时候都创建新的Matlab实例,应该怎么做?

9 个解决方案

#1


你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

#2


引用 1 楼 BEYONDMA 的回复:
你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

这个试过,用不同的进程启动Matlab还是会引用到已存在的matlab对象。。。

#3


引用 1 楼 BEYONDMA 的回复:
你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

版主救我

#4


楼主我想问一下MATLAB引擎的例子是在MATLAB帮助文件里看到的吗?我想学一下MATLAB引擎。求指点在哪看到的呢。

#5


引用 4 楼 qq_34577952 的回复:
楼主我想问一下MATLAB引擎的例子是在MATLAB帮助文件里看到的吗?我想学一下MATLAB引擎。求指点在哪看到的呢。

网上找的,有很多

#6


MLApp.MLApp O_matlab = new MLApp.MLApp();
            O_matlab.Visible = 0;
            string command1, command2;
            command1 = "t=0:0.01:2*pi;y=sin(t);h=plot(t,y)";//matlab脚本命令行
            String path = Directory.GetCurrentDirectory();//获取当前路径
            command2 = @"print(gcf,   '-djpeg',   '" + path + "\\Test1');close all";
            O_matlab.Execute(command1);
            O_matlab.Execute(command2);        // 执行Matlab命令
            O_matlab.Quit();
            O_matlab = null;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = Image.FromFile(path + "\\Test1.jpg"); /

#7


using MathWorks;
using MathWorks.MATLAB;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using MLApp;

#8


看看这样行不行

#9


已经解决了,,,,

#1


你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

#2


引用 1 楼 BEYONDMA 的回复:
你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

这个试过,用不同的进程启动Matlab还是会引用到已存在的matlab对象。。。

#3


引用 1 楼 BEYONDMA 的回复:
你可以试试用不同的进程打开matlab的实例,会不会打开不同的实例。

版主救我

#4


楼主我想问一下MATLAB引擎的例子是在MATLAB帮助文件里看到的吗?我想学一下MATLAB引擎。求指点在哪看到的呢。

#5


引用 4 楼 qq_34577952 的回复:
楼主我想问一下MATLAB引擎的例子是在MATLAB帮助文件里看到的吗?我想学一下MATLAB引擎。求指点在哪看到的呢。

网上找的,有很多

#6


MLApp.MLApp O_matlab = new MLApp.MLApp();
            O_matlab.Visible = 0;
            string command1, command2;
            command1 = "t=0:0.01:2*pi;y=sin(t);h=plot(t,y)";//matlab脚本命令行
            String path = Directory.GetCurrentDirectory();//获取当前路径
            command2 = @"print(gcf,   '-djpeg',   '" + path + "\\Test1');close all";
            O_matlab.Execute(command1);
            O_matlab.Execute(command2);        // 执行Matlab命令
            O_matlab.Quit();
            O_matlab = null;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            pictureBox1.Image = Image.FromFile(path + "\\Test1.jpg"); /

#7


using MathWorks;
using MathWorks.MATLAB;
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using MLApp;

#8


看看这样行不行

#9


已经解决了,,,,