C#窗体编程中如何调用matlab库函数 50
我在用visualstudio2012c#窗体应用编程,由于想要解一个高次方程,需要调用matlab7.0中的库函数solve,请问有什么方法可以调用,需要如何预设?我看...
我在用visual studio 2012 c#窗体应用编程,由于想要解一个高次方程,需要调用matlab7.0 中的库函数solve,请问有什么方法可以调用,需要如何预设?
我看到网上VC和matlab混编教程中说通过matlab引擎方式调用,具体要怎么做呢?或者有没有其他方法实现调用?希望有大神来知道一下。十分感谢 展开
我看到网上VC和matlab混编教程中说通过matlab引擎方式调用,具体要怎么做呢?或者有没有其他方法实现调用?希望有大神来知道一下。十分感谢 展开
1个回答
展开全部
在matlab中建一个m文件(test.m)。例如:
function test(h,D)
for x=-10:0.1:10,
if x>D
y=h;
hold on;
plot(x,y)
elseif x<-D
y=-h;
hold on;
plot(x,y)
else
y=h/(D*x);
hold on;
plot(x,y)
end
end
在MATLAB R2007a中输入deploytool命令(在matlab6.5中输入comtool),打开Matlab Build For .net窗口新建个工程,在此工程中“Add files”即填加test.m这个文件,build即可生成COM组件,为test.dll,即为我们将在C#中引用的COM组件。
Build时matlab已经自动将此dll在注册表中注册
不过之前我们还需做一个准备工作,打开开始菜单“运行”,输入regsvr32 "matlab安装路径\bin\win32\mwcomutil.dll",即对mwcomutil.dll进行注册(这个dll是matlab下作的任何com组件都要用到的dll),下面我们在其他编译器下调用时就可以用了。
2,下面即可在C#中调用dll文件:
"引用"右击,选择浏览,找到test.dll,添加。
"引用"右击,选择浏览,找到MWArray.dll(matlab安装路径\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll),添加。
再写入以下代码:
test.testclass st = new test.testclass();
MathWorks.MATLAB.NET.Arrays.MWArray m = 1, n = 2;
st.test(m,n);
function test(h,D)
for x=-10:0.1:10,
if x>D
y=h;
hold on;
plot(x,y)
elseif x<-D
y=-h;
hold on;
plot(x,y)
else
y=h/(D*x);
hold on;
plot(x,y)
end
end
在MATLAB R2007a中输入deploytool命令(在matlab6.5中输入comtool),打开Matlab Build For .net窗口新建个工程,在此工程中“Add files”即填加test.m这个文件,build即可生成COM组件,为test.dll,即为我们将在C#中引用的COM组件。
Build时matlab已经自动将此dll在注册表中注册
不过之前我们还需做一个准备工作,打开开始菜单“运行”,输入regsvr32 "matlab安装路径\bin\win32\mwcomutil.dll",即对mwcomutil.dll进行注册(这个dll是matlab下作的任何com组件都要用到的dll),下面我们在其他编译器下调用时就可以用了。
2,下面即可在C#中调用dll文件:
"引用"右击,选择浏览,找到test.dll,添加。
"引用"右击,选择浏览,找到MWArray.dll(matlab安装路径\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll),添加。
再写入以下代码:
test.testclass st = new test.testclass();
MathWorks.MATLAB.NET.Arrays.MWArray m = 1, n = 2;
st.test(m,n);
更多追问追答
追问
我想调用的matlab里自带的库函数
追答
变通一下不就结了?自己编写个函数,把系统函数写进去不就行了吗?另外,系统函数也是.m文件,你在matlab的安装目录内搜索你那个函数名,例如:plot.m,打开这个文件,操作和自定义函数一样,同样可以调用。
实际上,不管是自定义函数,还是系统函数,都是一样的,都是.m文件。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询