手把手教你C_调用MATLAB函数

合集下载

c语言实现matlab std函数

c语言实现matlab std函数

c语言实现matlab std函数摘要:1.引言2.C 语言与MATLAB 的概述3.MATLAB std 函数的实现方法4.实例:使用C 语言实现MATLAB std 函数5.总结正文:【引言】在科学技术的发展中,编程语言发挥着越来越重要的作用。

C 语言和MATLAB 作为两种广泛应用的编程语言,分别在底层硬件控制和科学计算领域有着举足轻重的地位。

有时,我们需要将两者结合使用,实现一些特定的功能。

本文将介绍如何使用C 语言实现MATLAB std 函数。

【C 语言与MATLAB 的概述】C 语言是一种通用的编程语言,具有高性能和灵活性。

它被广泛应用于操作系统、嵌入式系统、硬件驱动等领域。

MATLAB(Matrix Laboratory)是一款商业数学软件,主要用于数据分析、可视化和算法开发。

它拥有丰富的函数库和强大的矩阵计算能力,在工程和科研领域具有广泛的应用。

【MATLAB std 函数的实现方法】要实现MATLAB std 函数,首先需要了解MATLAB 的函数调用机制。

MATLAB 中的函数分为两类:内置函数和自定义函数。

内置函数由MATLAB直接提供,而自定义函数则需要用户自己编写。

MATLAB 通过函数句柄(function handle)来调用自定义函数。

函数句柄是一个指向函数入口的指针,可以通过函数名获取。

实现MATLAB std 函数的步骤如下:1.编写C 语言代码,实现所需的功能。

2.使用MATLAB 的C 语言接口(MATLAB Compiler)将C 语言代码编译成MATLAB 可调用的函数。

3.在MATLAB 中使用函数句柄调用编译后的C 语言函数。

【实例:使用C 语言实现MATLAB std 函数】为了演示如何实现MATLAB std 函数,我们以一个简单的例子为例。

假设我们要实现一个名为“my_function”的函数,该函数接受一个整数参数n,并计算n 的阶乘。

在MATLAB 中,我们可以这样调用该函数:```matlabresult = my_function(5);```首先,我们需要编写C 语言代码实现该功能:```c#include "matlab_std.h"// MATLAB 函数入口void my_function(int n) {// 计算n 的阶乘int result = 1;for (int i = 1; i <= n; i++) {result *= i;}// 返回结果MATLAB_return_double(&result);}```接下来,我们需要使用MATLAB Compiler 将C 语言代码编译成MATLAB 可调用的函数。

matlab调用函数路径

matlab调用函数路径

matlab调用函数路径
在 MATLAB 中,要调用函数,首先需要确保 MATLAB 能够找到该函数所在的路径。

有几种方法可以实现这一点:
1. 将函数所在的文件夹添加到 MATLAB 的搜索路径中。

可以通过在 MATLAB 命令窗口中使用 `addpath` 命令来实现,比如,
`addpath('C:\myfolder\myfunctions')`。

这将把
`C:\myfolder\myfunctions` 添加到 MATLAB 的搜索路径中,使得MATLAB 能够找到该文件夹中的函数。

2. 使用 `cd` 命令切换当前工作目录到函数所在的文件夹。

这样,当你调用函数时,MATLAB 将会在当前工作目录中寻找函数。

3. 可以使用绝对路径或相对路径来调用函数。

比如,如果函数`myfunction.m` 存在于 `C:\myfolder\myfunctions` 文件夹中,你可以使用 `C:\myfolder\myfunctions\myfunction` 或者
`myfunctions\myfunction` 来调用该函数。

无论使用哪种方法,都需要确保 MATLAB 能够找到函数所在的文件夹。

这样,当你调用函数时,MATLAB 就能够正确地定位并执行
该函数。

希望这些信息能够帮助你理解如何在 MATLAB 中调用函数路径。

如果你有其他关于 MATLAB 的问题,也欢迎随时向我提问。

matlab创建函数及调用函数

matlab创建函数及调用函数

matlab创建函数及调用函数MATLAB是一种十分强大的计算软件,一直以来都是科学与工程领域中的常用工具。

它可以大大简化数值计算和深度探索数据的过程。

在MATLAB的编程过程中,我们需要频繁使用函数,那么怎么创建、调用函数呢?1、创建函数在MATLAB中,我们可以使用命令行创建函数,也可以使用编辑器创建函数。

这里我们以命令行方式来介绍。

首先,我们需要在命令行中输入“edit filename.m”,其中filename是自己取的函数名字,.m是MATLAB的函数文件扩展名。

接着会出现一个新的编辑器窗口,在这个窗口中输入函数的具体内容。

例如,我们想要创建一个函数用于计算两个数的和,可以这样写:function [res] = add(num1, num2)res = num1 + num2;end其中,function后面跟着函数名;[res]表示函数的输出参数,如果有多个输出,需要使用逗号隔开;add(num1, num2)中add为函数名,num1和num2是输入参数;最后,下面的语句计算函数结果,结果存在变量res中。

2、调用函数在MATLAB中,调用已经创建好的函数其实很简单,只需要在命令行中输入函数名加上相应的参数即可。

例如,我们调用上述函数来计算1+2,可以这样写:add(1,2)输出结果为3。

如果你之前正确定义了函数,那么调用函数就是这样简单,虽然看上去这样简单,但是我们必须要注意的是函数的正确定义。

总体而言,MATLAB创建和调用函数是编程中必不可少的操作,通过对函数的合理定义和使用,可以大大提高编程效率,并且保证代码的逻辑性和规范性。

希望以上几点能对大家在MATLAB学习的道路上有所帮助,并且感谢阅读!。

C语言环境中调用Matlab程序指南

C语言环境中调用Matlab程序指南

C语言环境中调用Matlab程序指南甄梓宁znzhen@Matlab在计算方面功能强大、编写简单,但是要运行Matlab程序必须装有Matlab并且用户界面也不够完善,因此除了计算的其他部分采用C等更规范完备的语言进行编写是较好的选择。

本文就对如何在C程序中调用Matlab程序作说明。

在C程序中调用Matlab程序有两大类方法。

第一种是调用Matlab引擎,第二种是将m文件打包成dll文件在C语言环境下调用。

前者虽然易于实现,可以实时监控程序的运行,但是独立性差,需要安装完整版Matlab,且每次调用都会启动MATLAB.exe进程;后者则实现复杂,调试麻烦,但只需安装MCR(Matlab Component Runtime),耗费资源较少。

关于MCR,请见第四章的说明。

至于两种方法需要在C环境中如何配置请见第五章。

而反过来若要在Matlab下调用C程序则一般使用Matlab自带的mex工具,在此不作介绍。

一、调用Matlab引擎调用Matlab引擎可以在WIN32、MFC中使用,它的原理实际上相当于打开一个精简版的Matlab然后往里面输命令。

下面是调用Matlab中的加法程序add.m的例子。

先在Matlab的work目录下创建add.m文件并编写程序如下:function s = add (a, b)s = a+b;在C程序中,首先打开精简版的Matlab:(所需头文件,引用库等见第五章)Engine *ep = engOpen (NULL);编译运行后,会自动打开一个命令行监控窗口,输入pwd就可以看到当前的工作目录,于是需要先将工作目录转换至存放add.m的目录:engEvalString (ep, ”cd ..\\..\\work”);engEvalString是往Matlab里输命令的函数,显然我们的目标是成功运行:engEvalString (ep, ”s=add(a,b)”);当然,目前Matlab中并没有a和b两个变量,因此需要在C中初始化这两个变量并转换成Matlab基本变量类型mxArray,才能将它们输入到Matlab中。

VC++调用Matlab引擎(engine)配置方法

VC++调用Matlab引擎(engine)配置方法

如何在C/C++语言里调用Matlab引擎(engine)——(上篇)windows下的Visual C++平台Windows下调用Matlab引擎要做好以下三点设置(1)设置头文件目录(2)设置库文件目录,并添加链接库输入项libeng.lib和libmx.lib(3)设置环境变量以下以Visual Studio 2008为例来说明如何设置这三点:1、添加头文件目录依次选择:“工具”->“选项”,调出对话框后再在对话框左边“选择项目和解决方案”->“VC++目录”然后在右边选择“显示以下内容的目录”下的选框选择“包含文件”,再在目录列表的最下边空行处选中添加:matlab安装目录下的\extern\include路径比如我的是:C:\Program Files\MATLAB\R2011a\extern\include如果现在生成项目,链接将不会通过,比如可能会出现:1>engwindemo.obj : error LNK2019: 无法解析的外部符号_mxDestroyArray,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_mxGetPi,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engClose,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engGetVariable,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engOutputBuffer,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engEvalString,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engPutVariable,该符号在函数_WinMain@16 中被引用等链接错误;这就需要设置下面的库文件目录2、添加库文件目录在刚才调出来的对话框中,设置库目录:选择“显示以下内容的目录”下的选框选择“库文件”添加matlab目录下的C:\Program Files\MATLAB\R2011a\extern\lib\win32\microsoft注意:如果是项目要生成的是64位程序那么应该选择的是C:\Program Files\MATLAB\R2011a\extern\lib\win64\microsoft点击确定退出对话框,然后给项目添加链接库输入项:在解决方案资源管理器里选择对应的项目单机右键选择最下面的“属性”弹出属性对话框,在右边依次选择“配置属性”->“链接器”->“输入”,然后在右边“附加依赖项”那一项加上libeng.lib libmx.liblibmat.lib单击确定退出注意:(1)不要删除原有的依赖项(2)依赖项之间用空格隔开做到这一步时生成时就没问题出现了,但是运行程序时会出现“因为计算机中丢失libeng.dll”等类似问题第(3)步就解决这个问题的。

C++调用matlab动态库

C++调用matlab动态库

C++调用matlab动态库环境:Windows 7旗舰版(32位),VS2008,Matlab R2010b1. matlab中dll创建1.1 m文件编写function t = func(file)t=2;end将M文件保存为func.m,保存在d:/test文件夹中。

1.2 设置编译器在Matlab主窗口中将当前文件夹改为d:/test。

为了能够让VC调用Matlab程序,我们可以采用将Matlab程序包装成动态链接文件DLL的形式,然后让VC调用动态链接文件,因此在Matlab中,我们需要设置一下Matlab的编译库,在Matlab主窗口中键入如下代码:mex -setup然后出现Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?键入y后回车,出现Select a compiler:[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\Matlab\sys\lcc[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0[0] NoneCompiler:由于我们是需要用VC来调用Matlab函数,因此我们选择2,回车,出现Please verify your choices:Compiler: Microsoft Visual C++ 2008 SP1Location: D:\Program Files\Microsoft Visual Studio 9.0Are these correct [y]/n?键入y后回车,出现*************************************************************** ************Warning: MEX-files generated using Microsoft Visual C++ 2008 requirethat Microsoft Visual Studio 2008 run-time libraries beavailable on the computer they are run on.If you plan to redistribute your MEX-files to other MATLAB users, be sure that they have the run-time libraries.*************************************************************** ************Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB \R2010b\mexopts.bat From template:D:\PROGRA~1\Matlab\bin\win32\mexopts\msvc90opts.bat Done . . .*************************************************************** ***********Warning: The MATLAB C and Fortran API has changed to support MATLABvariables with more than 2^32-1 elements. In the near future you will be required to update your code to utilize the new API. You can find more information about this at:/doc/35346238.html,/support/solutio ns/en/data/1-5C27B9/?solution=1-5C27B9 Building with the -largeArrayDims option enables the new API.*************************************************************** ***********如果出现以上说明,则证明Matlab编译器设置成功了。

在C++中调用Matlab

在C++中调用Matlab
5)将Matlab中的运行结果回传给C、C++
二、程序实现
我们通过一个简单的程序demo.c来说明C、C++对Matlab的调用。
#include
#include
#include
#include
/*在头文件中加入engine.h。其包含了调用的Matlab函数声明。*/
#include "engine.h"
在c,c++中调用Matlab
在பைடு நூலகம்,c++中调用Matlab
在C、C++中调用Matlab
Matlab是美国MathWorks公司的产品,是一种以矩阵为基本编程单位的高效数值计算语言。Matlab集科学计算、图像处理、声音处理于一体,为用户提供了丰富的Windows图形界面设计方法,使用户能够在利用其强大数值计算功能的同时设计出友好的图形界面
engClose(ep);
mxDestroyArray(a_ptr);
return(0);
}
当然,该程序在编译之前还需设置一些环境参数。在不同的开发环境中,其设置方法略有差异,我们以Borland C++ builder开发平台为例加以说明。
1)首先必须完成Matlab中链接库的导入工作。在Matlab\extern\include中存在_libmx.def、_libmat.def、_libeng.def等定义文件,在DOS环境中对它们执行命令:
另一种方式是选择将一个自定义的数据结构复制到mxArray中,值得注意的是Matlab在存储矩阵时是按列序保存的,而在C、C++中是按行序保存的,所以转换时注意分清下标。
3)调用engPutArray函数将矩阵放入到Matlab工作区中。

C++如何调用matlab函数

C++如何调用matlab函数

C++如何调用matlab函数
C++如何调用matlab函数
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的.基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。

C++如何调用matlab 函数?下面就一起来了解看看吧!
本来电脑上安装的是matlab2012b,但是好像2012b只有64位的,故重新安装matlab7,安装完注册一下,cmd cd到matlab7的程序目录bin文件夹下,注册 matlab /regserver,就可以调用matlab了,先测试第一种方法,调用引擎,engOpen、engSetVisible、engClose
engEvalString(m_pEngine, "x1 = 0.01 : 0.01 : 10 * pi");
engEvalString(m_pEngine, "x2 = -10 * pi : 0.01 : -0.01");
engEvalString(m_pEngine, "y1 = sin(x1)./x1");
engEvalString(m_pEngine, "y2 = sin(x2)./x2");
engEvalString(m_pEngine, "plot([x2 x1], [y2 y1])");
在台式机上可以运行,但是到了笔记本上engOpen返回false,经过研究发现有可能是管理员权限的问题,
项目右键-属性-链接器-清单文件-uac执行级别选择requireAdministrator,重新编译运行果然正确了,先记录下来。

【C++如何调用matlab函数】。

VC++中如何能调用matlab函数

VC++中如何能调用matlab函数

Visual C++是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快。

但在科学计算方面函数库显得不够丰富、读取、显示数据图形不方便。

Matlab是一款将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,适合科学研究、工程设计等众多学科领域使用的一种简洁、高效的编程工具。

不过由于Matlab使用的是解释性语言,大大限制了它的执行速度和应用场合。

基于VC和Matlab混合编程是很多熟悉VC++编程而又需要进行科学计算、数据仿真的科研人员常用的一种方式,其中最简单也最直接的方法就是调用Matlab引擎。

本文以下部分将详细介绍通过VC++6.0调用Matlab6.5引擎来达到VC++与Matlab数据共享编程的方法。

1. 什么是Matlab引擎所谓Matlab引擎(engine),是指一组Matlab提供的接口函数,支持C/C++、Fortran等语言,通过这些接口函数,用户可以在其它编程环境中实现对Matlab 的控制。

可以主要功能有:★打开/关闭一个Matlab对话;★向Matlab环境发送命令字符串;★从Matlab环境中读取数据;★向Matlab环境中写入数据。

与其它各种接口相比,引擎所提供的Matlab功能支持是最全面的。

通过引擎方式,应用程序会打开一个新的Matlab进程,可以控制它完成任何计算和绘图操作。

对所有的数据结构提供100%的支持。

同时,引擎方式打开的Matlab进程会在任务栏显示自己的图标,打开该窗口,可以观察主程序通过engine方式控制Matlab运行的流程,并可在其中输入任何Matlab命令。

实际上,通过引擎方式建立的对话,是将Matlab以ActiveX控件方式启动的。

在Matlab初次安装时,会自动执行一次:matlab /regserver将自己在系统的控件库中注册。

如果因为特殊原因,无法打开Matlab引擎,可以在Dos命令提示符后执行上述命令,重新注册。

matlab函数定义与调用

matlab函数定义与调用

matlab函数定义与调用
Matlab函数定义与调用
MATLAB(Matrix Laboratory)函数是指在MATLAB编程环境中定义或
编写的可以重复使用的一组代码片段。

它既能利用现成的工具(例如Mathworks公司提供的Libraries),也能从头开始编写自己的函数。

定义和调用MATLAB函数的常用方法如下:
1、定义MATLAB函数:
定义MATLAB函数需要按照以下步骤:
(1)新建一个函数:
在MATLAB中,可以通过在MATLAB命令行输入“edit functionname.m”的命令来新建一个函数。

(2)编写函数代码:
在函数顶端,注明函数名称、函数参数格式,函数语句及函数返回值
类型。

(3)保存函数代码:
使用“save functionname.m”命令将函数代码保存为*.m文件,并保
证该函数文件已放置在MATLAB搜索路径中。

2、调用MATLAB函数:
在MATLAB中,若要调用自定义函数(包括自定义和现有函数库中的函数),只需输入“functionname(input1,...,inputN)”的命令即可,
并且可以给函数传递不定数量的参数,以满足不同需求。

此外,在调
用函数之前,也可以先设置函数参数以指定函数行为,这样可以实现
函数可配置性。

总之,MATLAB函数定义与调用是MATLAB编程中常用的两种方式,
它们具有灵活性和可重用性,并且可以让程序编写变得更加简单。

MATLAB的函数定义和调用的步骤既可以来自于现有的函数库,也可以
从零开始自定义,以满足多种不同的编程需求。

c_调用matlab函数(混合编程)

c_调用matlab函数(混合编程)

第2部分实战练习(自己做的)2.1 c#调用matlab函数matlab版本2009b,c#版本vs2008.2.1.1 matlab函数编译成dll文件(1)首先编写一个函数的m文件,如MatrixOpera表示两个矩阵相加和相减。

%--------------------------------------------------------function [addRlt,minusRlt]=MatrixOpera(a,b)% 矩阵相加,相减[m1,n1]=size(a);[m2,n2]=size(b);if m1~=m2 || n1~=n2display('矩阵大小不相同')error('参数错误');endaddRlt=a+b;minusRlt=a-b;end%-----------------------------------------------------------两个输入参数,两个输出参数,并且都是矩阵形式(2)在matlab 命令窗口输入deploytool,弹出如下窗口或者点击matlab的主菜单desktop→deploy tool获得如下面图所示的窗口,然后在file→new→deployment project 中点击。

获得上图窗口,修改工程名称和文件后缀名(必须是,.Net Assembly格式)修改(3)新建了一个叫matPrj的工程(它相当于c#中的命名空间namespace);然后给它增加class或类(它就是c#中的类),点[add class]比如myMathClass;之后再给它添加方法(它就是函数了),点[add files],如下图所示。

本实例中给它添加了MatrixOpera等函数。

class方法(4)完了之后就可以编译了。

编译出来后需要一两分钟的时间。

编译(5)找到该工程存放的文件夹,从里面拷出matPrj.dll文件。

手把手教你用C#调用MATLAB函数

手把手教你用C#调用MATLAB函数

】【【转载】手把手教你用C#调用MATLAB函数编译环境:Microsoft Visual Studio2008版本9.0.21022.8RTM Framework版本 3.5已安装的版本:ProfessionalMicrosoft Visual Basic200891986-031-5000002-60050Microsoft Visual Basic2008Microsoft Visual C#200891986-031-5000002-60050Microsoft Visual C#2008Microsoft Visual C++200891986-031-5000002-60050Microsoft Visual C++2008Microsoft Visual Studio2008Tools for Office91986-031-5000002-60050Microsoft Visual Studio2008Tools for OfficeMicrosoft Visual Web Developer200891986-031-5000002-60050Microsoft Visual Web Developer2008Crystal Reports AAJ6G-K0MSA4K-680002ZCrystal Reports Basic for Visual Studio2008Matlab2008b首先需要做的工作是matlab编译器的设置,设置方法为:在Command window中输入mbuild-setup 显示如下>>mbuild-setupPlease choose your compiler for building standalone MATLAB applications:,Would you like mbuild to locate installed compilers[y]/n?n%选择nSelect a compiler:[1]Lcc-win32C2.4.1[2]Microsoft Visual C++6.0[3]Microsoft Visual C++.NET2003[4]Microsoft Visual C++2005[5]Microsoft Visual C++2005Express Edition[6]Microsoft Visual C++2008[0]NoneCompiler:6%选择6,其他编译器可以选相应的选项,我没有验证过The default location for Microsoft Visual C++2008compilers is C:\Program Files\Microsoft Visual Studio9.0,but that directory does not exist on this machine.Use C:\Program Files\Microsoft Visual Studio9.0anyway[y]/n?n%选择nPlease enter the location of your compiler:[C:\Program Files\Microsoft Visual Studio9.0] D:\Program Files\Microsoft Visual Studio9.0%选择您自己的当前安装路径Please verify your choices:Compiler:Microsoft Visual C++2008Location:D:\Program Files\Microsoft Visual Studio9.0Are these correct[y]/n?y%看上述信息,如果正确选择y**************************************************************************** Warning:Applications/components generated using Microsoft Visual Studio2008require that the Microsoft Visual Studio2008run-timelibraries be available on the computer used for deployment.To redistribute your applications/components,be sure that thedeployment machine has these run-time libraries.**************************************************************************** Trying to update options file:C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2008b\compopts.batFrom template: D:\PROGRA~1\MATLAB\R2008b\bin\win32\mbuildopts\msvc90compp.batDone... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%至次编译器设置完成%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%在matlab的Command window中输入:>>deploytoolMatlab产生deployment tool配置窗口单击新建按钮,新建工程------>选择MATLAB Builder NE选项卡----->选择.NET Component 并添加工程名eaqual(测试用名,其实工程名称就是你导入C#后的命名空间名称,Matlab会在当前工作目录中新建文件夹文件夹名既为equal)---->点击ADD File按钮将你需要编译的MATLAB函数添加进当前工程,我这里导入的是D:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m文件---->点击build.deployment tool output窗口输出以下信息:Build output(2009-03-2815:32:55).[url=matlab:mcc%20-F%20%27E:%5CMATLAB%5Ceaqual.prj%27]mcc-F 'E:\MATLAB\eaqual.prj'[/url]等待...................................有点久当输出以下信息时编译成功了Compiler version:4.9(R2008b)Warning:Duplicate directory name:E:\MATLAB.mcc-W 'dotnet:eaqual,Eaqual,0.0,private'-d'E:\MATLAB\eaqual\src'-T'link:lib'-v'class{Eaqual:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m}'Warning:Name is nonexistent or not a directory:D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch.Warning:Name is nonexistent or not a directory:D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch.Processing D:\Program Files\MATLAB\R2008b\toolbox\aero\mcc.enc Processing D:\Program Files\MATLAB\R2008b\toolbox\matlab\mcc.enc Processing include files...2item(s)added. Processing directories installed with MCR...The file E:\MATLAB\eaqual\src\mccExcludedFiles.log contains a list of functions excluded from the CTF archive.2item(s)added.Generating MATLAB path for the compiled application... Created40path items.Begin validation of MEX files:Sat Mar2815:35:112009End validation of MEX files:Sat Mar2815:35:112009Warning:Name is nonexistent or not a directory:D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch.Deleting0temporary MEX authorization files.Parsing file"D:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m"(Referenced from:"Compiler Command Line").Parsing file"D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\deployprint.m"(Referenced from:"Compiler Command Line").Parsing file"D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\printdlg.m"(Referenced from:"Compiler Command Line").Generating file"E:\MATLAB\eaqual\src\Eaqual.cs".Generating file "E:\MATLAB\eaqual\src\EaqualNative.cs".Generating file "E:\MATLAB\eaqual\src\readme.txt".Generating file "E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs".Executing command: C:\WINDOWS\\Framework\v2.0.50727\csc.exe/nologo/optimize /doc:"E:\MATLAB\eaqual\src\eaqual.xml"/t:library/r:"D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll"/resource:"E:\MATLAB\eaqual\src\eaqual.ctf"/out:"E:\MATLAB\eaqual\src\eaqual.dll" "E:\MATLAB\eaqual\src\Eaqual.cs""E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs"Executing command: C:\WINDOWS\\Framework\v2.0.50727\csc.exe/nologo/optimize /doc:"E:\MATLAB\eaqual\src\eaqualNative.xml"/t:library/r:"D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll"/resource:"E:\MATLAB\eaqual\src\eaqual.ctf"/out:"E:\MATLAB\eaqual\src\eaqualNative.dll""E:\MATLAB\eaqual\src\EaqualNative.cs" "E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs"Copying:E:\MATLAB\eaqual\src\eaqual.dll->E:\MATLAB\eaqual\distribCopying:E:\MATLAB\eaqual\src\eaqualNative.dll->E:\MATLAB\eaqual\distrib Copying:E:\MATLAB\eaqual\src\readme.txt->E:\MATLAB\eaqual\distribCompilation completed succesfully.The output is located in E:\MATLAB\eaqual\distrib.You can package the component by clicking on the"ackage"icon in the Deployment Tooltoolbar,or by clicking the Tools->ackage menu when the Deployment Tool panel is selected.To include additional files in the package,click Project->Settings).生成的文件在工程文件夹里面我的是E:\MATLAB\eaqual\distrib\angle2quat.dll至此MATLAB的操作全部完成打开VISUAL Studio2008新建C#工程我这里用的是控制台名为TestOfmatlab_consolt我的是E:\Visual Studio2008\Projects\TEST\TestOfmatlab_consolt添加引用E:\MATLAB\eaqual\distrib\angle2quat.dll和D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll(这里我没有用MATLAB画图,所以只引用MWArray.dll)加入命名空间:using .Arrays;将下面代码加入Main函数eaqual.Eaqual eq=new eaqual.Eaqual();.Arrays.MWArray m=10,n=4,j=7,k;MWArray S="XYZ";k=eq.angle2quat((MWNumericArray)m,(MWNumericArray)n, (MWNumericArray)j,(MWCharArray)S);MWNumericArray temp=(MWNumericArray)k;double[,]location=(double[,])temp.ToArray(MWArrayComponent.Real);Console.WriteLine(location[0,0].ToString());Console.WriteLine(location[0,1].ToString());Console.WriteLine(k[2].ToString());Console.WriteLine(k[3].ToString());Console.WriteLine(k[4].ToString());Console.ReadLine();编译运行即可看到输出,此函数是姿态角转四元数函数,具体功能就不做说明了。

matlab函数的调用

matlab函数的调用

matlab函数的调用Matlab是一门强大的科学计算软件,它可以用来解决各种数学问题,包括线性代数、微积分、非线性方程求解、图像处理、信号处理等等。

在Matlab中,我们可以使用函数来完成不同的任务,而函数也可以有不同的形式和参数。

本文将介绍Matlab函数的调用方法以及一些常用的函数。

一、函数的调用在Matlab中,函数的调用基本上都是由函数名称和参数列表组成的。

例如,如果我们想计算一个向量的平均值,我们可以调用内置的mean函数来完成,它的调用方式如下:mean(A)这里的A是一个向量,传递给mean函数的参数就是这个向量。

当求出平均值之后,mean函数会将结果返回给调用者。

在Matlab中,函数的调用也支持链式调用的形式。

例如,我们可以使用sort函数对一个向量进行排序,然后使用mean函数来计算排序之后的向量的平均值,接着使用round 函数将平均值取整,最后将结果打印出来,这个过程可以写成如下的代码:A = [3 1 4 1 5 9 2 6];B = round(mean(sort(A)));disp(B);4Matlab中内置了许多常用的数学函数,这些函数不仅可以帮助我们进行科学计算,还可以加速我们的开发过程。

下面列举一些常用的Matlab函数及其功能:1、sin、cos、tan、asin、acos、atan这些函数是代表正弦、余弦、正切、反正弦、反余弦、反正切函数。

这些函数常常被用于计算三角函数的值,可以十分方便地完成各种三角形的计算。

2、log、exp这些函数分别代表自然对数和以e为底数的指数函数。

在Matlab中可以使用log来计算对数,使用exp来计算指数,这些函数对于数学建模和数据分析中的各种计算都十分有用。

3、sqrt这个函数代表求平方根的函数,可以用于计算各种几何图形的边长和圆的半径等等。

4、abs这个函数代表求绝对值函数,可以用于对数据进行处理和比较。

5、round、ceil、floor这些函数分别代表四舍五入、向上取整和向下取整的函数,可以用于对数字进行处理和舍入。

matlab函数文件的编写和调用

matlab函数文件的编写和调用

matlab函数文件的编写和调用
Matlab函数文件的编写和调用步骤如下:
1. 打开Matlab软件,进入Matlab命令窗口;
2. 输入命令“edit 函数名”,创建新的函数文件,或者在文件浏览器中手动创建一个.m格式的函数文件;
3. 在函数文件中编写函数代码,包括函数名、输入参数、输出参数和函数体等;
4. 使用保存按钮将函数文件保存在Matlab当前的工作目录中;
5. 在Matlab命令窗口中,使用函数名加上输入参数来调用该函数,函数将返回输出参数的值。

例如,编写一个计算两数之和的函数sum:
1. 打开Matlab软件,进入Matlab命令窗口;
2. 输入命令“edit sum”,弹出编辑窗口;
3. 在编辑窗口中输入以下代码:
function c = sum(a, b)
% 计算两个数的和
c = a + b;
end
4. 保存函数文件“sum.m”在Matlab当前的工作目录中;
5. 在Matlab命令窗口中,输入“sum(2, 3)”调用函数,函数将返回5。

需要注意的是,函数文件名必须与函数名相同,并且保存在Matlab当前的工作目录中或其他Matlab可以搜索到的路径中。

调用函数时,输入参数的个数和类型必须与函数定义中的输入参数一致,否则将报错或产生意外结果。

基于COM的VC调用Matlab的方法及实现

基于COM的VC调用Matlab的方法及实现

甚 j百 行 代码 。 =
t e d t id e hd o e l e 秆a 8 e a 8 b t e n h e ae m to t rai l z n f r d t e w e
Ma a  ̄V 是 目前应用最广 泛的工程仿 t b lC l
真 和 开发 软 件 ,但 是 它 们 有 着 各 自的 优 缺 点。Mal t b具有 强大 的矩阵 运算 、数据 处理 a 和 图形 显示 功能 ,其输 出结 果可 视化 ,编 程
法 厦其各 的优 块. 点.然后鳍合 详 细的 实例
运 行速 度 、功能 性 以及 应用 程序 界面 开发 方
面功能强大 ,但是在数值计算和数据可视化
方 面 ,VC并不具 备太 多优 势 ,在 Malb中 t a

两行代码 就 可以实现 的功能在 V 中要 儿十 C
中那样精 细的 图形 , 且对 于有的 绘图语句 也 而
不 支持 。现 在 M ah os公 司已 经被生 产 t To l Mal t b的 Mah ok 公司兼 并 ,之后部 分 a tW r s Macm的 内容 被合并  ̄Mah r s i a t o 1 twok的V s l ] u Malb中 。 t a 4 )使用 Mal 的cmb i eT具 。 O t b o ul r . C M a d 是 C mp n n j tMo ue的简称 ,它 o o e tObe d l c
T i h ss ie a r f i r d c i o p a t a hs e i v s b l jt o u t n f r c i l t g e n o c s nf a c o h c m ia in f a l ih C, i ii n e f t e o bn t o M t b w t V g c o a a a5 日 SV P Is e i c w& 8 o h w o m lme t n l B8 B B & p cf y n o t iPe n f i i , a v n a e a d ds na e O 甑c w y & e t d atg s n i tg s f W n a r nj e t n d觞 W l hn 1i D e .T e ^ h 1 f t ec ) 删船 协 船Fosr t a n nta e

C#调用Matlab

C#调用Matlab

2、利用matlab自带的.nettool工具将.m文件转换成.net组件--->.dll文件为接口,它实际上不含任何实现,都是调用另一个.ctf文件来完成具体的功能。
3、在c#中,必须引入mwarray.dll才能拥有在.net中进行矩阵运算所需要的一切。虽然matlab help中只是说推荐,但一般的应用中,只是进行一部分函数的调用,而不是去取得整个运行结果。这个.dll是必须引入的。有时mclmcrrt74.dll这个文件也需要引入。根据具体的要求,需要引入的文件也有所差别。
ResOut=GTN.GetMatchNo(1,MainAdd, ModelAdd, FName.GTM(), Vaval);
MWNumericArray temp = (MWNumericArray)ResOut[0];
//矩阵转换
Array netInterfaceMatrix = temp.ToArray(MWArrayComponent.Real); //c#规范的矩阵
[/redtramp/blog/item/785997264e4d27148b82a1c1.html]
kevin 评论于 2007-11-20 11:34 回复 引用 查看
#2楼 [楼主]
Matlab统计工具箱简介
/space/html/68/t-53768.html
发表于 2007-11-20 11:07 kevin 阅读(1449) 评论(7) 编辑 收藏 所属分类: 技术及文章推介 、软件技术小文
评论
#1楼 [楼主]
补充:
2.c#.net下实现调用
打开或新建一个c#项目(我采用的是编辑器),选中右边的解决方案资源管理器中的引用,点鼠标右键,选添加引用,在弹出来的窗口中选com,然后也找到comtest_1_0.dll,点选择,然后确定就可,此时此com组件也添加到工程里面去了,同样我们可以选择对象浏览器来看comtest及下面的sgltest类,c#测试项目如下:

CC++下调用matlab函数操作说明

CC++下调用matlab函数操作说明

CC++下调⽤matlab函数操作说明1.matlab的安装连接:/s/1qXuF7aO安装32位版本的matlab(在⽬录下bin⽂件夹中有两个⽂件夹,选择win32⽂件夹下的setup进⾏安装)2.matlab mex编译器配置安装完matlab之后,需要设定对应的c++编译器才能编译.m⽂件⽣成可供c++调⽤的库⽂件。

打开matlab,在命令⾏输⼊:mex -setup,选择已安装的vc编译器我的matlab版本是R2010b,选择的是[2] Microsoft Visual C++ 2008 Express,然后⼀直选择y直到看到Done然后继续在命令⾏中输⼊:mbuild -setup ,按照上述类似的⽅式设置编译器假设存在⼀个Add.m的⽂件需要编译成库⽂件,Add.m⽂件function C=Add(A,B)C=A+B;end使⽤命令编译:mcc -W cpplib:libAdd -T link:lib Add.m成功编译会在Add.m的路径下⽣成⼀些⽂件:如果出现错误,可能是编译器配置错误,依次输⼊⼀下两⾏命令查看配置⽂件:>> cd(prefdir)>> edit compopts.batset VSINSTALLDIR= 这⾥如果是空值,需要将电脑中安装的VC路径写到这⾥3.创建c++程序调⽤matlab函数将前⾯⽣成的libAdd.dll"、"libAdd.h"和"libAdd.lib"三个⽂件拷贝到新建的vc⼯程中,并配置⼯程属性,添加matlab安装⽬录下extern中include⽂件夹,我的是D:\matlab\extern\include然后配置库⽬录:添加D:\matlab\extern\lib\win32\microsoft这⾥需要注意的是,该路径下有" mclmcrrt.lib"⽂件,是我们需要的。

VC调用matlab的linprog函数-----自己的总结

VC调用matlab的linprog函数-----自己的总结

VC调用matlab的linprog函数-----自己的总结1.编写m文件function [X,f]=lin(f,A,b)[x,fval] = linprog(f,A,b);X=x;f=fval;End保存为lin.m2.将m文件编译为dllmcc -W cpplib:liblin -T link:lib lin.m -v其中,libname为编译后的库文件名,lin.m为matlab的m文件名该命令用于mwArray数据类型生成四个文件(用到的):liblin.ctf liblin.dll liblin.h liblin.lib3.VC++6.0工程的创建与设置(1)建立一个名为Test的C++控制台工程,在工程中添加一个名为test.cpp文件(2)对VC++6.0的设置(与matlab关联,一旦设置后以后就不需再修改)----工具--->选项---->目录----->include files: 加入--e:\matlab7\extern\inlcude------>Library files:加入--e:\matlab7\exterm\lib\win32\microsoft\msvc60(3)针对该工程的设置:工程---->设置----->连接---->对象/库模块:加入mclmcrrt.libliblin.lib(自己制作dll时生成的库文件)注:也可以不在这里设置,在test.cpp文件中加入:#pragma comment(lib,"mclmcr.lib")#pragma comment(lib,"liblin.lib")(4)将前面生成的四个文件(matlab的works文件夹下)添加到VC6.0建立的工程目录下,将liblin.h添加到工程(工程--->添加到工程---->文件)例: min f = -4x1- x2,s.t. -x1+2x2<=42x1+3x2<=12x1-x2<=3x1,x2>=0(1)在matlab中计算:>> f = [-4;-1];>>A = [-1 2; 2 3; 1 -1];>>b = [4;12;3];>>[x,fval] = linprog(f,A,b)(2)在VC中调用dll具体代码:#include <iostream>using namespace std;#include "mclmcr.h"//mwArray类型定义#include "liblin.h"dll的头文件#pragma comment(lib,"mclmcr.lib")#pragma comment(lib,"liblin.lib")int main(){//初始化程序if(!mclInitializeApplication(NULL,0)){cout<<"Could not initialize the application!";exit(1);}//初始化库if(!liblinInitialize()){cout<<"Could not Initialize the library!";exit(1);}//输入参数f,A,bmwArray A(3,2,mxDOUBLE_CLASS);mwArray f(2,1,mxDOUBLE_CLASS);mwArray b(3,1,mxDOUBLE_CLASS);//输出参数X,fvalmwArray X(2,1,mxDOUBLE_CLASS);mwArray fval(1,1,mxDOUBLE_CLASS);//输入,传给mwArraydouble aa[]={-1,2,1,2,3,-1};//注意,这里的约束系数与在matlab中的不一样double bb[]={4,12,3};double ff[]={-4,-1};//给f,A,b赋值A.SetData(aa,6);b.SetData(bb,3);f.SetData(ff,2);//调用函数lin(2,X,fval,f,A,b);//从X,fval取值double* x;double* fv;x = new double[2];fv = new double[1];X.GetData(x,2);fval.GetData(fv,1);//输出结果cout<<"X = "<<x[0]<<" "<<x[1]<<endl; cout<<"fv = "<<fv[0]<<endl;//关闭库和程序liblinTerminate(); mclTerminateApplication();return 0;}。

C 中调用MATLAB方法

C  中调用MATLAB方法

三种方式在C++中调用matlabC/C++调用Matlab在工程实践中,C/C++调用Matlab的方法主要有调用Matlab计算引擎、包含m文件转换的C/C++文件,以及调用m文件生成的DLL文件。

1利用Matlab计算引擎Matlab的引擎库为用户提供了一些接口函数,利用这些接口函数,用户在自己的程序中以计算引擎方式调用Matlab文件。

该方法采用客户机/服务器的方式,利用Matlab引擎将Matlab和C/C++联系起来。

在实际应用中,C/C++程序为客户机,Matlab作为本地服务器。

C/C++程序向Matlab计算引擎传递命令和数据信息,并从Matlab计算引擎接收数据信息。

Matlab提供了以下几个C语言计算引擎访问函数供用户使用:engOpen,engClose,engGetVariable,engPutVariable,engEvalString,engOutputBuffer,engOpenSingleUse,engGetVisible,engSetVisible。

下面以C语言编写的、调用Matlab引擎计算方程x3?2x+5=0根的源程序example2.c 为例,说明C/C++调用Matlab计算引擎编程的原理和步骤:#include<windows.h>#include<stdlib.h>#include<stdio.h>#include"engine.h"int PASCAL WinMain(HANDLEhInstance,HANDLE hPrevInstance,LPSTR lpszCmdLine,intnCmdShow){Engine*ep;mxArray*P=NULL,*r=NULL;char buffer[301];doublepoly[4]={1,0,-2,5};if(!(ep=engOpen(NULL))){fprintf(stderr,"\nCan'tstart MATLAB engine\n");return EXIT_FAILURE;}P=mxCreateDoubleMatrix(1,4,mxREAL);mxSetClassName(P,"p");memcpy((char*)mxGetPr(P),(char*)poly,4*sizeof(double));engPutVariable(ep,P);engOutputBuffer(ep,buffer,300);engEvalString(ep,"disp(['多项式',poly2str(p,'x'),'的根']),r=roots(p)");MessageBox(NULL,buffer,"example2展示MATLAB引擎的应用",MB_OK);engClose(ep);mxDestroyArray(P);return EXIT_SUCCESS;}在Matlab下运行example2.exe:mex-f example2.c。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【转载】手把手教你用C#调用MATLAB函数编译环境:Microsoft Visual Studio 2008版本9.0.21022.8 RTMMicrosoft .NET Framework版本3.5已安装的版本: ProfessionalMicrosoft Visual Basic 2008 91986-031-5000002-60050Microsoft Visual Basic 2008Microsoft Visual C# 2008 91986-031-5000002-60050Microsoft Visual C# 2008Microsoft Visual C++ 2008 91986-031-5000002-60050Microsoft Visual C++ 2008Microsoft Visual Studio 2008 Tools for Office 91986-031-5000002-60050Microsoft Visual Studio 2008 Tools for OfficeMicrosoft Visual Web Developer 2008 91986-031-5000002-60050Microsoft Visual Web Developer 2008Crystal Reports AAJ6G-K0MSA4K-680002ZCrystal Reports Basic for Visual Studio 2008Matlab 2008b首先需要做的工作是matlab编译器的设置,设置方法为:在Command window中输入mbuild -setup 显示如下>> mbuild -setupPlease choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers [y]/n? n %选择nSelect a compiler:[1] Lcc-win32 C 2.4.1[2] Microsoft Visual C++ 6.0[3] Microsoft Visual C++ .NET 2003[4] Microsoft Visual C++ 2005[5] Microsoft Visual C++ 2005 Express Edition[6] Microsoft Visual C++ 2008[0] NoneCompiler: 6 %选择6,其他编译器可以选相应的选项,我没有验证过The default location for Microsoft Visual C++ 2008 compilers is C:\Program Files\Microsoft Visual Studio 9.0,but that directory does not exist on this machine.Use C:\Program Files\Microsoft Visual Studio 9.0 anyway [y]/n? n%选择nPlease enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio 9.0] D:\Program Files\Microsoft Visual Studio 9.0 %选择您自己的当前安装路径Please verify your choices:Compiler: Microsoft Visual C++ 2008Location: D:\Program Files\Microsoft Visual Studio 9.0Are these correct [y]/n? y %看上述信息,如果正确选择y**************************************************************************** Warning: Applications/components generated using Microsoft Visual Studio2008 require that the Microsoft Visual Studio 2008 run-timelibraries be available on the computer used for deployment.To redistribute your applications/components, be sure that thedeployment machine has these run-time libraries.****************************************************************************Trying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2008b\compopts.batFrom template: D:\PROGRA~1\MA TLAB\R2008b\bin\win32\mbuildopts\msvc90compp.batDone . . .%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%至次编译器设置完成%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%在matlab的Command window中输入:>> deploytoolMatlab产生deployment tool配置窗口单击新建按钮,新建工程------>选择MATLAB Builder NE 选项卡----->选择.NET Component 并添加工程名eaqual(测试用名,其实工程名称就是你导入C#后的命名空间名称,Matlab会在当前工作目录中新建文件夹文件夹名既为equal)---->点击ADD File按钮将你需要编译的MATLAB函数添加进当前工程,我这里导入的是D:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m文件---->点击build.deployment tool output 窗口输出以下信息:Build output( 2009-03-28 15:32:55).[url=matlab:mcc%20-F%20%27E:%5CMATLAB%5Ceaqual.prj%27]mcc -F 'E:\MATLAB\eaqual.prj'[/url]等待...................................有点久当输出以下信息时编译成功了Compiler version: 4.9 (R2008b) Warning: Duplicate directory name: E:\MATLAB. mcc -W 'dotnet:eaqual,Eaqual,0.0,private' -d 'E:\MATLAB\eaqual\src' -T 'link:lib' -v'class{Eaqual:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m}'Warning: Name is nonexistent or not a directory: D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Warning: Name is nonexistent or not a directory: D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Processing D:\Program Files\MATLAB\R2008b\toolbox\aero\mcc.enc Processing D:\Program Files\MATLAB\R2008b\toolbox\matlab\mcc.enc Processing include files... 2 item(s) added. Processing directories installed with MCR... The file E:\MATLAB\eaqual\src\mccExcludedFiles.log contains a list of functions excluded from the CTF archive. 2 item(s) added. Generating MATLAB path for the compiled application... Created 40 path items. Begin validation of MEX files: Sat Mar 28 15:35:11 2009 End validation of MEX files: Sat Mar 28 15:35:11 2009 Warning: Name is nonexistent or not a directory: D:\Program Files\MATLAB\R2008b\toolbox\compiler\patch. Deleting 0 temporary MEX authorization files. Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\aero\aero\angle2quat.m" (Referenced from: "Compiler Command Line"). Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\deployprint.m" (Referenced from: "Compiler Command Line"). Parsing file "D:\Program Files\MATLAB\R2008b\toolbox\compiler\deploy\printdlg.m" (Referenced from: "Compiler Command Line"). Generating file "E:\MATLAB\eaqual\src\Eaqual.cs". Generating file "E:\MATLAB\eaqual\src\EaqualNative.cs". Generating file "E:\MATLAB\eaqual\src\readme.txt". Generating file "E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs". Executing command: C:\WINDOWS\\Framework\v2.0.50727\csc.exe /nologo /optimize /doc:"E:\MATLAB\eaqual\src\eaqual.xml" /t:library /r:"D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll"/resource:"E:\MATLAB\eaqual\src\eaqual.ctf" /out:"E:\MATLAB\eaqual\src\eaqual.dll" "E:\MATLAB\eaqual\src\Eaqual.cs""E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs" Executing command: C:\WINDOWS\\Framework\v2.0.50727\csc.exe /nologo /optimize /doc:"E:\MATLAB\eaqual\src\eaqualNative.xml" /t:library /r:"D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll"/resource:"E:\MATLAB\eaqual\src\eaqual.ctf"/out:"E:\MATLAB\eaqual\src\eaqualNative.dll" "E:\MATLAB\eaqual\src\EaqualNative.cs" "E:\MATLAB\eaqual\src\dotnet_mcc_component_data.cs"Copying: E:\MATLAB\eaqual\src\eaqual.dll -> E:\MATLAB\eaqual\distribCopying: E:\MATLAB\eaqual\src\eaqualNative.dll -> E:\MATLAB\eaqual\distribCopying: E:\MATLAB\eaqual\src\readme.txt -> E:\MATLAB\eaqual\distribCompilation completed succesfully. The output is located in E:\MATLAB\eaqual\distrib.You can package the component by clicking on the "ackage" icon in the Deployment Tooltoolbar, or by clicking the Tools->ackage menu when the Deployment Tool panel is selected. To include additional files in the package, click Project->Settings).生成的文件在工程文件夹里面我的是E:\MATLAB\eaqual\distrib\angle2quat.dll至此MATLAB的操作全部完成打开VISUAL Studio 2008新建C#工程我这里用的是控制台名为TestOfmatlab_consolt我的是E:\Visual Studio 2008\Projects\TEST\TestOfmatlab_consolt添加引用E:\MATLAB\eaqual\distrib\angle2quat.dll和D:\Program Files\MATLAB\R2008b\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll(这里我没有用MATLAB画图,所以只引用MW Array.dll)加入命名空间:using MathWorks.MA .Arrays;将下面代码加入Main函数eaqual.Eaqual eq=new eaqual.Eaqual();.Arrays.MWArray m=10,n=4,j=7,k;MWArray S = "XYZ";k = eq.angle2quat((MWNumericArray)m, (MWNumericArray)n, (MWNumericArray)j,(MWCharArray)S);MWNumericArray temp = (MWNumericArray)k;double[,] location = (double[,])temp.ToArray(MWArrayComponent.Real);Console.WriteLine(location[0,0].ToString());Console.WriteLine(location[0,1].ToString());Console.WriteLine(k[2].ToString());Console.WriteLine(k[3].ToString());Console.WriteLine(k[4].ToString());Console.ReadLine();编译运行即可看到输出,此函数是姿态角转四元数函数,具体功能就不做说明了。

相关文档
最新文档