蒋继成 张丽芳 赵孝文 张晓东 王强

摘 要:文章重点探讨了visual c#基于dll函数调用matlab程序,进行混合编程的方法。并将该方法在获得60Co-γ射线辐照白酒的提升其品质的最佳辐照工艺中加以应用。

关键词:60Co-γ射线;白酒;visual c#;matlab;dll函数;混合编程

引言

大量的研究表明,在60Co-γ射线辐照加速白酒陈化的辐照工艺参数和白酒品质的主要参数之间存在着复杂的非线性关系[1],目前工程领域中较为流行的软件MATLAB提供了现成的神经网络工具箱,为解决这个矛盾提供了便利条件。神经网络工具箱提供了很多经典的学习算法,使用它能够快速实现对实际问题的建模求解。这为建立60Co-γ射线对白酒品质的影响规律模型提供了方便,根据辐照后检测的数据,应用MATLAB软件建立60Co-γ射线对白酒品质的影响规律模型,利用模型优化辐照工艺参数,为科学辐照提供理论依据。

c#是微软开发的一种面向对象的编程语言,c#简单、功能强大、类型安全,可实现应用程序的快速开发[2]。

1 60Co-γ射线辐照白酒检测结果

本项目利用60Co-γ射线装置进行了白酒辐照实验。每个辐照计量处理为一组,并设空白对照组,每组500ml白酒。实验结果表明,经60Co-γ射线处理组与对照组相比,总酸、总酯均有不同程度增加。部分数据详见表1。

表1 白酒辐照后贮存3个月后检测的指标统计

2 基于dll的visual c#调用matlab

MATLAB和Visual C#混合编程分为通过组件对象模型(COM)和通过DLL两种形式。文章中通过DLL实现两者之间的混合编程。

2.1 MATLAB生成dll文件

(1)创建一个简单的.m文件。在MATLAB中写一个m文件,输入如下代码,将代码保存为baijiujianmo.m文件。

(2)使用Matlab DeployTool生成.Net组件。在MATLAB7.0中Command Window中输入deploytool并回车,在图形界面里选.net组件,然后进入一个工程目录的界面,新建工程,工程的名字就是.net组件的名字,在其下面的目录表示.net类名baijiujianmo.net,在类名上点右键“Add File”,把MATLAB的baijiujianmo.m函数文件选进去。最后进行编译,生成的目录下有以工程名命名的dll文件baijiujianmo.dll。

(3)添加对MATLAB生成的baijiujianmo.dll的引用[3]。导入两个dll,一个baijiujianmo.dll,一个/dotnetbuilder/bin/win32/ /v2.0/mwarray.dll。然后在工程里加入下面的引用:

using MathWorks.MATLAB.NET.Arrays;

using MathWorks.MATLAB.NET.Utility;

using baijiujianmo;

2.2 C#利用非托管函数方法调用dll

使用C#时调用baijiujianmo.dll,C#调用dll很像VB,下面给出的C#调用dll的方式[4];源代码如下:

public class Utility

{

[DllImport("kernel32",

EntryPoint="CreateDirectory",

CallingConvention=CallingConvention.StdCall]

public static extern bool Create (string name);

[DllImport("baijiujianmo"]

EntryPoint="MessageBox",

CallingConvention=CallingConvention.StdCall]

public static extern int MsgBox (string msg);

}

class MyClass

{

public static int Main()

{

string myString;

Console.Write("Enter your message: ");

myString = Console.ReadLine();

return Utility.MsgBox(myString);

}

}

3 MATLAB与c#实现可视化的人机界面

结合Matlab运算简便快速及C#实现可视化人机界面方便美观的优点,通过应用均方差函数比较目标值和预测值的差异,计算目标值与预测值间的误差,观察参数优化情况,经过232次循环训练后,网络误差平方和均值为3×10-3,达到了设定的最小训练目标值。剂量、剂量率、温度参数优化结果如图1,图2,图3,图4,参数优化误差趋势如图5。

4 结束语

文章应用visual c#和MATLAB软件混合编程建立优化60Co-γ射线辐照白酒工艺参数的人机交互、界面友好的用户界面,同时为科学利用60Co-γ射线辐照辐照白酒提供了理论依据。

参考文献

[1]宋波.白酒中各种成分对酒质的影响[J].酿酒科技,2011(12):65-67.

[2]秦健,王萍,涂雪伟,等.C#.NET与MATLAB混合编程在探空数据对比中的应用[J].气象水文海洋仪器,2009(02):34-37.

[3]赵士伟,赵明波,陈平.基于COM的MATLAB与C#.NET混合编程的实现与应用[J].山东理工大学学报(自然科学版),2006(04):57-59.

[4]焦纲领,邓建辉,韩啸.MATLAB与Visual C#.NET混合编程[J]. 海军航空工程学院学报,2008(1):24-28.

作者简介:蒋继成(1978-),男,硕士,研究方向:控制理论与控制工程。