将简单的 MATLAB 函数集成到 .NET 应用程序中
注意
MATLAB® Compiler SDK™ 产品的示例位于 中,其中 matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NETVS 指定您正在使用的 Microsoft® Visual Studio® .NET 版本。您可以通过在 Visual Studio 中打开以下解决方案来加载所有示例的工程:Version
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\DotNetExamples.sln简单绘图示例向您展示如何创建调用 MATLAB 函数来显示绘图的 .NET 程序集。有关使用 MATLAB 函数修改结构体数组的示例,请参阅电话簿。
在以下示例中,您可以执行以下步骤将 MATLAB 函数集成到 .NET 应用程序中:
使用 MATLAB Compiler SDK 产品将 MATLAB 函数转换为 .NET 类的方法,并将该类包装在 .NET 程序集中。
通过实例化 .NET 类并使用
MWArray类库处理数据转换,可以在 C# 应用程序或 Visual Basic® 应用程序中访问该组件。使用 Visual Studio .NET 开发环境构建并运行生成的应用程序。
前提条件
验证您是否已满足所有 MATLAB Compiler SDK .NET 目标要求。有关详细信息,请参阅MATLAB Compiler SDK .NET 目标要求。
验证您是否已安装 Microsoft Visual Studio。
最终用户必须安装 MATLAB Runtime 才能运行应用程序。有关详细信息,请参阅下载并安装 MATLAB Runtime。
出于测试目的,您可以使用安装的 MATLAB 来代替 MATLAB Runtime。
创建简单绘图
文件
| MATLAB 函数位置 | |
| C# 代码位置 | |
| Visual Basic 代码位置 | |
过程
将 MATLAB 产品附带的以下文件夹复制到您的工作文件夹:
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\PlotExample
在 MATLAB 命令提示符下,导航到工作文件夹中的
PlotExample\PlotComp子文件夹。检查位于
drawgraph中的PlotExample\PlotComp函数。在 MATLAB 命令提示符下测试该函数。function drawgraph(coords) plot(coords(1,:), coords(2,:)); pause(5)x = 0:0.01:10; y = sin(x); z = [x;y]; drawgraph(z)
该函数输出一个显示正弦波的图形。
使用以下信息,使用 .NET 程序集编译器或
compiler.build.dotNETAssembly构建 .NET 组件:字段 值 库名称 PlotComp类名 Plotter要编译的文件 drawgraph.m例如,如果您使用的是
compiler.build.dotNETAssembly,请输入:buildResults = compiler.build.dotNETAssembly('drawgraph.m', ... 'AssemblyName','PlotComp', ... 'ClassName','Plotter');
有关详细信息,请参阅生成 .NET 程序集并编译 .NET 应用程序中的说明。
确定是否使用 C# 还是 Visual Basic 来访问组件。
C#
如果您使用 C#,请为访问该组件的 C# 应用程序编写源代码。
此示例的示例应用程序位于
PlotExample\PlotCSApp\PlotApp.cs中。此语句创建
Plotter类的一个实例:Plotter plotter= new Plotter();此语句明确将本机
plotValues转换为MWNumericArray,然后调用方法drawgraph:plotter.drawgraph((MWNumericArray)plotValues);Visual Basic
如果您使用 Visual Basic,请为访问该组件的 Visual Basic 应用程序编写源代码。
此示例的示例应用程序位于
PlotExample\PlotVBApp\PlotApp.vb中。此语句创建
Plotter类的一个实例:Dim plotter As Plotter = New Plotter该语句调用方法
drawgraph:plotter.drawgraph(coords)
无论哪种情况,
PlotApp程序都会执行以下操作:创建两个双精度值数组。
创建一个
Plotter对象。调用
drawgraph方法使用 MATLABplot函数绘制方程。使用
MWNumericArray来表示drawgraph方法绘制方程所需的数据。使用
try-catch模块来捕获并处理任何异常。
使用 Visual Studio 打开与您的应用程序语言相对应的 .NET 工程文件。
C#
如果您使用的是 C#,则
PlotCSApp文件夹包含此示例的 Visual Studio .NET 工程文件。在 Windows® 资源管理器中双击PlotCSApp.csproj在 Visual Studio .NET 中打开该工程。您也可以通过右键点击 PlotCSApp.csproj 并选择在 MATLAB 外部打开从桌面打开它。Visual Basic
如果您使用的是 Visual Basic,则
PlotVBApp文件夹包含此示例的 Visual Studio .NET 工程文件。在 Windows 资源管理器中双击PlotVBApp.vbproj在 Visual Studio .NET 中打开该工程。您也可以通过右键点击 PlotVBApp.vbproj 并选择在 MATLAB 外部打开从桌面打开它。
添加对位于生成或安装程序集的文件夹中的程序集文件
PlotComp.dll引用。添加对
MWArrayAPI 的引用。如果您的系统上安装了 MATLAB matlabroot\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dll如果您的系统上安装了 MATLAB Runtime <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dll在 Visual Studio .NET 中构建并运行
PlotApp应用程序。应用程序显示以下绘图:

继续这个示例:
尝试在另一台计算机上运行生成的应用程序。
尝试使用
compiler.package.installer为该包构建一个安装程序。尝试集成由多个函数组成的程序集。
创建电话簿
在此示例中,您将创建一个 .NET 程序集,该程序集调用 MATLAB 函数来修改包含电话号码的结构体数组。
文件
| MATLAB 函数位置 | |
| C# 代码位置 | |
| Visual Basic 代码位置 | |
过程
将 MATLAB 附带的以下文件夹复制到您的工作文件夹:
matlabroot\toolbox\dotnetbuilder\Examples\VSVersion\NET\PhoneBookExample
在 MATLAB 命令提示符下,导航到工作文件夹中的
PhoneBookExample\PhoneBookComp子文件夹。检查位于
makephone中的PhoneBookExample\PhoneBookComp函数。function book = makephone(friends) book = friends; for i = 1:numel(friends) numberStr = num2str(book(i).phone); book(i).external = ['(508) 555-' numberStr]; end
在 MATLAB 命令提示符下测试该函数。
friends(1).name = "Jordan Robert"; friends(1).phone = 3386; friends(2).name = "Mary Smith"; friends(2).phone = 3912; struct2table(makephone(friends))
ans = 2×3 table name phone external _______________ _____ __________________ "Jordan Robert" 3386 {'(508) 555-3386'} "Mary Smith" 3912 {'(508) 555-3912'}使用以下信息,使用 .NET 程序集编译器或
compiler.build.dotNETAssembly构建 .NET 组件:字段 值 库名称 PhoneBookComp类名 PhoneBook要编译的文件 makephone例如,如果您使用的是
compiler.build.dotNETAssembly,请输入:buildResults = compiler.build.dotNETAssembly('makephone.m', ... 'AssemblyName','PhoneBookComp', ... 'ClassName','PhoneBook');
有关详细信息,请参阅生成 .NET 程序集并编译 .NET 应用程序中的说明。
确定是否使用 C# 还是 Visual Basic 来访问组件。
C#
如果您使用 C#,请为访问该组件的 C# 应用程序编写源代码。
此示例的示例应用程序位于
PhoneBookExample\PhoneBookCSApp\PhoneBookApp.cs中。Visual Basic
如果您使用 Visual Basic,请为访问该组件的 Visual Basic 应用程序编写源代码。
此示例的示例应用程序位于
\PhoneBookExample\PhoneBookVBApp\PhoneBookApp.vb中。
无论哪种情况,
PhoneBookApp程序都会执行以下操作:使用 MWStructArray 创建一个结构体数组来表示包含姓名和电话号码的示例电话簿数据。
将
Phonebook类实例化为thePhonebook对象,如下所示:
thePhonebook = new phonebook();调用 MATLAB 函数
makephone通过添加附加字段来创建结构的修改副本,如下所示:
result = thePhonebook.makephone(1, friends);显示结果结构体数组。
使用 Visual Studio 打开与您的应用程序语言相对应的 .NET 工程文件。
C#
如果您使用的是 C#,则
PhoneBookCSApp文件夹包含此示例的 Visual Studio .NET 工程文件。在 Windows 资源管理器中双击PhoneBookCSApp.csproj在 Visual Studio .NET 中打开该工程。您也可以通过右键点击 PhoneBookCSApp.csproj 并选择在 MATLAB 外部打开从桌面打开它。Visual Basic
如果您使用的是 Visual Basic,则
PhoneBookVBApp文件夹包含此示例的 Visual Studio .NET 工程文件。在 Windows 资源管理器中双击PhoneBookVBApp.vbproj在 Visual Studio .NET 中打开该工程。您也可以通过右键点击 PhoneBookVBApp.vbproj 并选择在 MATLAB 外部打开从桌面打开它。
创建对位于生成程序集的文件夹中的程序集文件
PhoneBookComp.dll引用。创建对
MWArrayAPI 的引用,其位于:MATLAB matlabroot\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dllMATLAB Runtime <MATLAB_RUNTIME_INSTALL_DIR>\toolbox\dotnetbuilder\bin\win64\<version>\MWArray.dll在 Visual Studio .NET 中构建并运行
PhoneBookComp应用程序。该应用程序显示以下输出:
Friends: 2x2 struct array with fields: name phone Result: 2x2 struct array with fields: name phone external Result record 2: Mary Smith 3912 (508) 555-3912 Entire structure: Number of Elements: 4 Dimensions: 2-by-2 Number of Fields: 3 Standard MATLAB view: 2x2 struct array with fields: name phone external Walking structure: Element 1 name: Jordan Robert phone: 3386 external: (508) 555-3386 Element 2 name: Mary Smith phone: 3912 external: (508) 555-3912 Element 3 name: Stacy Flora phone: 3238 external: (508) 555-3238 Element 4 name: Harry Alpert phone: 3077 external: (508) 555-3077
