关于matlab与c#混合编程的问题(3)

2025-06-28

For example, you may have a few large data objects (images, for example) that would incur excess cost to your organization if managed

with a type-safe interface. By mixing type-safe interfaces and manual marshaling, smaller data types can be managed

automatically with the type-safe interface and your large data can be managed on an as-needed basis.

回到目录

3.Type-Safe Interfaces实际案例

对这个混编方式,很显示可以节省很多事情,我认为,作为原始的数据类型转换方式,还是应该掌握的。在掌握了之后,再使用这个方法,会事半功倍,毕竟不是所有的问题都可以用接口解决。接下来,就让我们一起用一个小的编程实例,来演示整个过程的使用。 演示环境:Visual Studio 2010,Matlab 2012a,.NET 4.0 演示内容:一个简单的乘法运算混编实现

一、新建一个 类库类型的项目 ,名称MatlabDemo,.NET 4.0,如下图所示:

一、在上面的项目中添加一个接口文件IMultiply.cs,并编写下面的代码,因为我们实现的是一个简单的乘法,所以添加如下几个接口方法:

1namespace MatlabDemo 2 {

3///

乘法接口 4publicinterface IMultiply 5 {

6//2个数直接相乘

7double multiply(double x, double y); 8

9//数组相乘

10double[] multiply(double[] x, double y); 11

12//矩阵相乘

13double[,] multiply(double[,] x, double[,] y); 14 }

15 }

这里注意,一定要将接口的可访问性设置为Public,否则混编的时候,Matlab会找不到接口原型,编译失败。编写好,编译项目即可,会在bin文件夹下得到MatlabDemo.dll文件,这个文件下面的步骤会用到。

三、编写M函数,并设置混编项目。我们编写一个简单的乘法M函数m,如下所示:

1 function z = multiply(x, y) 2

3 z = x * y;

注意这里的名称一定要和接口方法的名称对于起来,否则Matlab怎么会认识,想想就明白了。然后在Matlab中输入deploytool命令,输入项目名称:TypeSaftDemo,并选择项目类型:.NET Assembly,这个过程是“混编三部曲”基本过程,以前的视频中专门见到了,不仔细说明,如下图所示:

确定之后,混编项目基本就建立了,然后新建一个类DemoTest,并把上面编写的multiply.m函数添加到这个类中去,这其实就是一个常规的混编过程,很简单。添加完成

之后,如果是普通的混编方式,直接编译就可以了,但基于接口的混编方式,还有一个过程要设置,看下图,单击混编项目的设置(Settings...):

如下图,打开设置后,选择“Type Safe API”选项卡:

首先,选择我们在第一个过程中编写好的MatlabDemo.dll接口文件,选择后,程序会自动搜索该dll中的可用接口(公开的),在.NET interface下拉列表中显示,选择你需要的,这里我们是IMultiply,如下图所示的MatlabDemo.IMultiply,然后选择该接口和Matlab混编程序中对于的类,我们的multiply.m函数在DemoTest类中,如下图的Wrapped class:

设置完成之后,关闭即可。然后编译,如果没有问题,提示编译成功之后,打开编译好的文件夹,我们可以看到如下3个dll文件:

生成的3个文件,TypeSafeDemo.dll其实和普通的混编方式是一样的,可以和以前数据类型转换的方式一样使用;而DemoTestIMultiply.dll和TypeSafeDemoNative.dll这2个


关于matlab与c#混合编程的问题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《天作之合》中西合璧婚礼主持词

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219