Mathematica和Matlab共用net的dll

26 篇文章 0 订阅
1 篇文章 0 订阅

目的:更大程度在Mathematica和Matlab间共享代码

1 使用c#编写dll

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

namespace ToMATLAB

{

    public class XDClass

    {

        //这是一个不带返回值的方法

        public void Message()

        {

            MessageBox.Show("Here is Dot Net~");

        }

       

        //这是一个属性

        public string Help

        {

            get

            {

                return "I am a Property of Class XDClass";

            }

        }

        //这是一个带返回值的方法,利用海伦公式计算三角形面积

        public double TriangleArea(double a,double b,double c)

        {

            double max = a;

            if (max < b) max = b;

            if (max < c) max = c;

            if (2 * max >= a + b + c)

                return -1;//不构成三角形

            else

            {

                double p = (a + b + c) / 2;

                return Math.Sqrt(p * (p - a) * (p - b) * (p - c));

            }

        }

    }

}

2 编译dll

  csc /out:ToMATLAB.dll /t:library ToMatlab.cs


3 在Matlab中调用test1.m

tic;
dir = cd;
asmInfo = NET.addAssembly([cd, '\ToMATLAB.dll'])

%methods ToMATLAB.XDClass
xd=ToMATLAB.XDClass();
xd.Help;
%xd.Message
xd.TriangleArea(3,4,5);
%xd.TriangleArea(3,4,1)

toc

4 在Mathematica中调用test1.nb

Needs["NETLink`"]

LoadNETAssembly["d:\\temp\\matlab_dlls\\netc\\ToMATLAB.dll"]

NETAssembly["ToMATLAB", 1]

LoadedNETAssemblies[]

{NETAssembly["mscorlib", 2], NETAssembly["InstallableNET", 3], 
 NETAssembly["Wolfram.NETLink", 4], NETAssembly["System", 5], 
 NETAssembly["System.Windows.Forms", 6], 
 NETAssembly["System.Drawing", 7], NETAssembly["ToMATLAB", 1]}

LoadedNETTypes[]

{}

xd = NETNew["ToMATLAB.XDClass", []]


xd@Help[]

"I am a Property of Class XDClass"

xd@TriangleArea[3, 4, 6]

5.33268


完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值