导航:首页 > 编程语言 > matlab外部接口编程pdf

matlab外部接口编程pdf

发布时间:2022-11-30 03:46:45

⑴ 如何JSP系统中应用matlab外部程序接口(MATLAB Builder for java

加入java的目录下的lib目录下,然后把该jar文加入Java环境变量中如
CLASSPATH=$JAVA_HOME/lib/yourjarfile.jar
如果是linux可以编辑/etc/profile文件加进去
最后source /etc/profile使之生效就可以了...

⑵ MATLAB实用教程的内容简介

《MATLAB实用教程》从快速入门和实用性两个方面,对MATLAB7.0进行了详细的介绍,并列举了大量实用的例子。全书共分为12章,第1章介绍MATLAB的安装及系统功能;第2~3章介绍MATLAB基于命令窗口的应用,讲述了MATLAB的基础知识和数学运算;第4~8章介绍MATLAB基于M文件的应用,讲述了MATLAB的编程功能、数据显示及存取功能、数值和符号计算功能、图形用户界面设计功能等;第9~10章从模块化仿真的角度介绍MATLAB基于Simulink环境的应用,讲述了MATLAB的包含S函数的Simulink环境基础知识和在信号处理、图像处理以及控制等领域的实际应用;第11章从信息和功能交互的角度介绍MATLAB的外部接口,讲述了MATLAB与Word、Excel、C语言、Java语言等的接口;第12章提供对《MATLAB实用教程》内容加深理解的实验。
《MATLAB实用教程》可作为电子、通信、自控等专业本科生的教材,同时也可作为相关专业研究生及广大科研人员的参考用书。

⑶ 我对MATLAB面向对象编程很感兴趣,请问哪位有《MATLAB面向对象编程——从入门到设计》电子版 谢谢了

这本书,我没有,但是我又这些,有你有用的吗?找找看!

MATLAB6工程计算及应用.txt
MATLAB与数学实验(第2版).pdf
应用Web和MATLAB的信号与系统基础(第二版).pdf
MATLAB 语言即学即会.PDF
MATLAB 电子仿真与应用33.PDF
MATLAB 神经网络工具箱函数.PDF
MATLAB 神经网络工具箱应用简介.PDF
MATLAB 神经网络应用设计.PDF
MATLAB 程序设计.PDF
MATLAB 程序设计与实例应用.PDF
MATLAB 程序设计与应用3.PDF
MATLAB 程序设计教程.PDF
MATLAB 程序设计语言.PDF
MATLAB 程式设计与应用.PDF
MATLAB 符号数学工具箱应用简介.PDF
MATLAB 语言与控制系统仿真.PDF
MATLAB 语言与数学建模.PDF
Matlab和Maple系统在力学教学中的应用.pdf
Matlab.programming.for.engineers.(2001).pdf
MATLAB.pdf
MATLAB5_x与科学计算.pdf
MATLAB6.0数学手册.pdf
MATLAB 3.PDF
MATLAB 5.3精彩编程及高级应用.PDF
MATLAB 5.3精要、编程及高级应用.PDF
MATLAB 5.x入门与提高.pdf
MATLAB 5.X应用与技巧.PDF
MATLAB 5.X手册.PDF
MATLAB 5.语言与程序设计.PDF
MATLAB 5_1实用指南.PDF
MATLAB 5_3学习教程.PDF
MATLAB 5_3实例教程.PDF
MATLAB 5_3实例详解.PDF
MATLAB 5_3实用教程.PDF
MATLAB 5_3应用指南.PDF
MATLAB 5_3精要、编程及高级应用.PDF
MATLAB 5_X入门与应用.PDF
MATLAB 5_X工具箱使用技巧与实例.PDF
MATLAB 5_X应用与技巧.PDF
MATLAB 5_X程序设计语言.PDF
MATLAB 6 数学建模基础教程.PDF
MATLAB 6.5辅助小波分析与应用.PDF
MATLAB 6_1基础及应用技巧.PDF
MATLAB 6_1实用指南(上册).PDF
MATLAB 6_1实用指南(下册).PDF
MATLAB 6_1最新应用祥解.PDF
MATLAB 6_X图像处理.PDF
MATLAB 6_X符号运算及其应用.PDF
MATLAB 6实例教程.PDF
MATLAB 6数学手册.PDF
MATLAB 6时尚创作百例含1CD.PDF
MATLAB 6科学运算完整解决方案.PDF
MATLAB 7及工程问题解决方案.PDF
MATLAB 7实用指南(上册).PDF
MATLAB 7实用指南(下册).PDF
MATLAB 下的数字信号处理示例…….PDF
MATLAB 与SIMULINK工程应用.PDF
MATLAB 与外部程序接口.PDF
MATLAB 与数学实验.PDF
MATLAB 与通信仿真.PDF
MATLAB 人工神经元网络小例子.PDF
MATLAB 仿真技术与应用.PDF
MATLAB 信号处理.PDF
MATLAB 信号处理详解.PDF
MATLAB 偏微分方程工具箱应用简介.PDF
MATLAB 原理与工程应用.PDF
MATLAB 及其在理工课程中的应用指南.PDF
MATLAB 及其在电路与控制理论中的应用.PDF
MATLAB 及在电子信息类课程中的应用.PDF
MATLAB 命令大全.PDF
MATLAB 图像处理命令.PDF
MATLAB 图形图像.PDF
MATLAB 图形技术——绘图及图形用户接口.PDF
MATLAB 在工程数学上的应用.PDF
MATLAB 在理论力学教学中的应用.PDF
MATLAB 在电信工程中的应用.PDF
MATLAB 基础及数学软件.PDF
MATLAB 外部接口编程.PDF
MATLAB 实用教程.PDF
MATLAB 小波分析工具箱原理与应用.PDF
MATLAB 工具箱应用.PDF
MATLAB 工具箱应用指南:信息工程篇.PDF
MATLAB 工具箱应用指南:控制工程篇.PDF
MATLAB 工具箱应用指南——应用数学篇.PDF
MATLAB 工程数学.PDF
MATLAB 工程数学应用.PDF
MATLAB 工程数学解题指导.PDF
MATLAB 工程计算及应用.PDF
MATLAB 应用图像处理.PDF
MATLAB 应用程序接口.PDF
MATLAB 应用程序接口用户指南.PDF
MATLAB 扩展编程含盘.PDF
MATLAB 控制系统设计.PDF
MATLAB 教程.PDF
MATLAB 数值计算与编程.PDF
MATLAB 数据处理与应用.PDF
MATLAB 数理统计工具箱应用简介.PDF
MATLAB 方法.PDF
MATLAB 模糊逻辑工具箱函数.PDF
MATLAB 模糊逻辑工具箱的分析与应用.PDF
MATLAB 电子仿真与应用.PDF
MATLAB 语言工具箱——TOOLBOX实用指南.PDF
MATLAB 语言应用系列书MATLAB 科学图形构建基础与应用(6_X).PDF
MATLAB 语言程序设计·MATLAB 语言程序设计:5_2版.PDF
MATLAB 语言程序设计教程.PDF
MATLAB 语言精要及动态仿真工具SIMULINK.PDF
MATLAB 进阶(含SIMULINK).PDF
MATLAB 频谱分析.PDF
MATLAB 高级编程.PDF
MATLAB 高级语言及其在控制系统中的应用.PDF
MATLAB与C_C++混合编程.PDF
MATLAB仿真应用详解.pdf
MATLAB仿真应用详解1.pdf
MATLAB及在电子信息课程中的应用 (第3版).pdf
MATLAB数学计算范例教程.pdf
MATLAB程序设计与应用……第一版.pdf
MATLAB程序设计与应用……第二版.pdf
MATLAB语言——演算纸式的科学工程计算语言.PDF
基于MATLAB 的系统分析与设计——时频分析.PDF
基于MATLAB 6_X的系统分析与设计:神经网络.PDF
基于MATLAB 6_X的系统分析与设计:虚拟现实.PDF
基于MATLAB _SIMULINK的系统仿真技术与应用.PDF
基于MATLAB 的系统分析与设计:图像处理.PDF
基于MATLAB 的系统分析与设计:模糊系统.PDF
基于MATLAB 的系统分析与设计——信号处理.PDF
基于MATLAB 的系统分析与设计——小波分析.PDF
基于MATLAB 的系统分析与设计——控制系统.PDF
精通MATLAB 综合辅导与指南.PDF
精讲多练MATLAB .PDF
精通MATLAB 5.PDF
精通MATLAB 5:综合辅导与指南.PDF
精通MATLAB 6.PDF
《 MATLAB 5.2使用手册 》.pdf

⑷ 《Matlab编程基础》pdf下载在线阅读全文,求百度网盘云资源

《Matlab编程基础》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1tlKSF0Own3u0W1cQ1_Rlfw

?pwd=i2oh 提取码:i2oh
简介:美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分Matlab应用非常之广泛

⑸ 怎么在MATLAB中编写程序,把simulink仿真出来的图形用MATLAB实现

Simulink的命令行仿真方式:
[t,x,y]=sim('modelname')
利用对话框参数进行仿真,返回输出矩阵;
[t,x,y]=sim('modelname', timespan, options, ut)
利用输入参数进行仿真,返回输出矩阵;
[t,x,y1,y2,...yn]=sim('modelname', timespan, options, ut)
利用输入参数进行仿真,返回逐个输出;
参数说明:
'modelname' 运行的模型名(不包含扩展名),必须在Matlab的搜索路径上。
timespan 指定仿真的时间区间,可以采取以下几种格式:
(1)[] 空,利用模型对话框设置时间;
(2)T_final 标量,制定终止仿真时间;
(3)[T_start T_final] 二元向量,指定仿真时间区间;
(4)outputTimes 任何指定输出时间记录点的向量。
options MATLAB特定的一种数据结构,具有最高优先权,可以覆盖模型参数对话框中的设置。
ut 赋给仿真对象数入口模块的量,具有最高优先设置,它是形为[t,u1,u2...]的数值矩阵,每个为时间序列或输入序列。

⑹ 如何让matlab用mex与C连接使用有例子 PDF

如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:
double add(double x, double y)
{ return x + y; }

现在我想要在Matlab中使用它,比如输入:

>> a = add(1.1, 2.2)
3.3000
要得出以上的结果,那应该怎样做呢?
解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。可以这样理解,MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。该特定接口的操作,包含在mexFunction这个函数中,由使用者具体设定。
所以现在我们要写一个包含add和mexFunction的C文件,Matlab调用函数,把函数中的自变量(如上例中的1.1和2.2)传给 mexFunction的一个参数,mexFunction把该值传给add,把得出的结果传回给mexFunction的另一个参数,Matlab通过该参数来给出在Matlab语句中调用函数时的输出值(如上例中的a)。
值得注意的是,mex文件是与平台有关的,以我的理解,mex文件就是另类的动态链接库。在matlab6.5中使用mex -v 选项,你可以看到最后mex阶段有类似如下的信息:
--> "del _lib94902.obj"
--> "del "test.exp""
--> "del "test.lib""
也就是说,虽然在matlab6.5生成的是dll文件,但是中间确实有过lib文件生成。
比如该C文件已写好,名为add.c。那么在Matlab中,输入:
>> mex add.c
就能把add.c编译为MEX文件(编译器的设置使用指令mex -setup),在Windows中,MEX文件类型为mexw32,即现在我们得出add.mexw32文件。现在,我们就可以像调用M函数那样调用 MEX文件,如上面说到的例子。所以,通过MEX文件,使用C函数就和使用M函数是一样的了。
我们现在来说mexFunction怎样写。
mexFunction的定义为:
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{

}
可以看到,mexFunction是没返回值的,它不是通过返回值把结果传回Matlab的,而是通过对参数plhs的赋值。mexFunction的四个参数皆是说明Matlab调用MEX文件时的具体信息,如这样调用函数时:
>> b = 1.1; c = 2.2;
>> a = add(b, c)
mexFunction四个参数的意思为:
nlhs = 1,说明调用语句左手面(lhs-left hand side)有一个变量,即a。
nrhs = 2,说明调用语句右手面(rhs-right hand side)有两个自变量,即b和c。
plhs是一个数组,其内容为指针,该指针指向数据类型mxArray。因为现在左手面只有一个变量,即该数组只有一个指针,plhs[0]指向的结果会赋值给a。
prhs和plhs类似,因为右手面有两个自变量,即该数组有两个指针,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指针数组,即不能改变其指向内容。
因为Matlab最基本的单元为array,无论是什么类型也好,如有double array、 cell array、 struct array……所以a,b,c都是array,b = 1.1便是一个1x1的double array。而在C语言中,Matlab的array使用mxArray类型来表示。所以就不难明白为什么plhs和prhs都是指向mxArray类型的指针数组。
完整的add.c如下:
#include "mex.h" // 使用MEX文件必须包含的头文件
// 执行具体工作的C函数
double add(double x, double y)
{
return x + y;
}
// MEX文件接口函数
void mexFunction(int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[])
{
double *a;
double b, c;
plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
a = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
*a = add(b, c);
}
mexFunction的内容是什么意思呢?我们知道,如果这样调用函数时:
>> output = add(1.1, 2.2);
在未涉及具体的计算时,output的值是未知的,是未赋值的。所以在具体的程序中,我们建立一个1x1的实double矩阵(使用 mxCreateDoubleMatrix函数,其返回指向刚建立的mxArray的指针),然后令plhs[0]指向它。接着令指针a指向plhs [0]所指向的mxArray的第一个元素(使用mxGetPr函数,返回指向mxArray的首元素的指针)。同样地,我们把prhs[0]和prhs [1]所指向的元素(即1.1和2.2)取出来赋给b和c。于是我们可以把b和c作自变量传给函数add,得出给果赋给指针a所指向的mxArray中的元素。因为a是指向plhs[0]所指向的mxArray的元素,所以最后作输出时,plhs[0]所指向的mxArray赋值给output,则 output便是已计算好的结果了。
上面说的一大堆指向这指向那,什么mxArray,初学者肯定都会被弄到头晕眼花了。很抱歉,要搞清楚这些乱糟糟的关系,只有多看多练。
实际上mexFunction是没有这么简单的,我们要对用户的输入自变量的个数和类型进行测试,以确保输入正确。如在add函数的例子中,用户输入char array便是一种错误了。
从上面的讲述中我们总结出,MEX文件实现了一种接口,把C语言中的计算结果适当地返回给Matlab罢了。当我们已经有用C编写的大型程序时,大可不必在 Matlab里重写,只写个接口,做成MEX文件就成了。另外,在Matlab程序中的部份计算瓶颈(如循环),可通过MEX文件用C语言实现,以提高计算速度。
以上是对mex文件的初步认识,下面详细介绍如何用c语言编写mex文件:

1 为什么要用C语言编写MEX文件
MATLAB是矩阵语言,是为向量和矩阵操作设计的,一般来说,如果运算可以用向量或矩阵实现,其运算速度是非常快的。但若运算中涉及到大量的循环处理,MATLAB的速度的令人难以忍受的。解决方法之一为,当必须使用for循环时,把它写为MEX文件,这样不必在每次运行循环中的语句时MATLAB都对它们进行解释。
2 编译器的安装与配置
要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器:
5.0、6.0版的MicroSoft Visual C++(MSVC)
5.0、5.2、5.3、5.4、5.5版的Borland C++
LCC(由MATLAB自带,只能用来产生MEX文件)
下面是安装与配置MATLAB编译器应用程序MEX的设置的步骤:
(1)在MATLAB命令窗口中运行mex –setup,出现下列提示:
Please choose your compiler for building external interface (MEX) files:
Would you like mex to locate installed compilers [y]/n?

(2)选择y,MATLAB将自动搜索计算机上已安装的外部编译器的类型、版本及所在路径,并列出来让用户选择:
Select a compiler:
[1] Borland C++Builder version 6.0 in C:\Program Files\Borland
[2] Digital Visual Fortran version 6.0 in C:\Program Files\Microsoft Visual Studio
[3] Lcc C version 2.4 in D:\MATLAB6P5P1\sys\lcc
[4] Microsoft Visual C/C++ version 6.0 in C:\Program Files\Microsoft Visual Studio
[0] None
Compiler:
(3)选择其中一种(在这里选择了3),MATLAB让用户进行确认:
Please verify your choices:
Compiler: Lcc C 2.4
Location: D:\MATLAB6P5P1\sys\lcc
Are these correct?([y]/n):

(4)选择y,结束MATLAB编译器的配置。
3 一个简单的MEX文件例子
【例1】用m文件建立一个1000×1000的Hilbert矩阵。
tic
m=1000;
n=1000;
a=zeros(m,n);
for i=1:1000
for j=1:1000
a(i,j)=1/(i+j);
end
end
toc
在matlab中新建一个Matlab_1.cpp 文件并输入以下程序:
#include "mex.h"
//计算过程
void hilb(double *y,int n)
{
int i,j;
for(i=0;i
for(j=0;j
*(y+j+i*n)=1/((double)i+(double)j+1);
}
//接口过程
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
double x,*y;
int n;

if (nrhs!=1)
mexErrMsgTxt("One inputs required.");
if (nlhs != 1)
mexErrMsgTxt("One output required.");
if (!mxIsDouble(prhs[0])||mxGetN(prhs[0])*mxGetM(prhs[0])!=1)
mexErrMsgTxt("Input must be scalars.");
x=mxGetScalar(prhs[0]);
plhs[0]=mxCreateDoubleMatrix(x,x,mxREAL);
n=mxGetM(plhs[0]);
y=mxGetPr(plhs[0]);
hilb(y,n);
}
该程序是一个C语言程序,它也实现了建立Hilbert矩阵的功能。在MATLAB命令窗口输入以下命令:mex Matlab_1.cpp,即可编译成功。进入该文件夹,会发现多了两个文件:Matlab_1.asv和Matlab_1.dll,其中Matlab_1.dll即是MEX文件。运行下面程序:
tic
a=Matlab_1(1000);
toc
elapsed_time =
0.0470
由上面看出,同样功能的MEX文件比m文件快得多。
4 MEX文件的组成与参数
MEX文件的源代码一般由两部分组成:
(1)计算过程。该过程包含了MEX文件实现计算功能的代码,是标准的C语言子程序。
(2)入口过程。该过程提供计算过程与MATLAB之间的接口,以入口函数mxFunction实现。在该过程中,通常所做的工作是检测输入、输出参数个数和类型的正确性,然后利用mx-函数得到MATLAB传递过来的变量(比如矩阵的维数、向量的地址等),传递给计算过程。
MEX文件的计算过程和入口过程也可以合并在一起。但不管那种情况,都要包含#include "mex.h",以保证入口点和接口过程的正确声明。注意,入口过程的名称必须是mexFunction,并且包含四个参数,即:
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
其中,参数nlhs和nrhs表示MATLAB在调用该MEX文件时等式左端和右端变量的个数,例如在MATLAB命令窗口中输入以下命令:
[a,b,c]=Matlab_1(d,e,f,g)
则nlhs为3,nrhs为4。
MATLAB在调用MEX文件时,输入和输出参数保存在两个mxArray*类型的指针数组中,分别为prhs[]和plhs[]。prhs[0]表示第一个输入参数,prhs[1]表示第二个输入参数,…,以此类推。如上例中,d→prhs[0],e→prhs[1],f→prhs[2],f→prhs[3]。同时注意,这些参数的类型都是mxArray *。
接口过程要把参数传递给计算过程,还需要从prhs中读出矩阵的信息,这就要用到下面的mx-函数和mex-函数。
5 常用的mex-函数和mx-函数
在MATLAB6.5版本中,提供的mx-函数有106个,mex-函数有38个,下面我们仅介绍常用的函数。
5.1入口函数mexFunction
该函数是C MEX文件的入口函数,它的格式是固定的:
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
说明:MATLAB函数的调用方式一般为:[a,b,c,…]=被调用函数名称(d,e,f,…),nlhs保存了等号左端输出参数的个数,指针数组plhs具体保存了等号左端各参数的地址,注意在plhs各元素针向的mxArray内存未分配,需在接口过程中分配内存;prhs保存了等号右端输入参数的个数,指针数组prhs具体保存了等号右端各参数的地址,注意MATLAB在调用该MEX文件时,各输入参数已存在,所以在接口过程中不需要再为这些参数分配内存。

⑺ MATLAB如何调用FORTRAN语言

首先需要保存MATLAB代码在fortran同一目录下
这里命名成test.m
内容如下:
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]
[color=FF0000]clear all; close all; clc;
M=load('matrix M.txt');
eigvalues=eig(M);
plot(real(eigvalues),imag(eigvalues),'-r*');
title('矩阵M的特征值');
xlabel('特征值实数部分');
ylabel('特征值虚数部分');[/color]
[color=008000]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/color]
!fortran代码如下:
[color=0000FF]program main
implicit none
integer,parameter :: rows=100, cols=100
real*8 :: M(rows,cols)
integer :: i
call random_seed()
call random_number(M)
open(100,file='matrix M.txt')
write(100,'(<cols>E25.15)') transpose(M)
close(100)
call system("matlab -r test")
end program main[/color]
直接运行fortran代码就可以了。
matlab不用事先打开。
vs2005+ivf10.1+matlab7.8.0 测试通过
试一试!

⑻ matlab !!!!

摘要:由于MA7ⅡAB不能直接对硬件端12进行读写操作,缺乏了实时性,使得工程上的应用受到了
极大的限制。而通过MATI.AB应用程序接口Mex调用C++语言,可实现在MATLAB环境下对硬件端
12信号的读写。为此,笔者对Mex接口文件进行了详细介绍,包括Mex接口的各种特殊功能、详细编
写规则和具体编译要求,具体阐述了Mex接口在MA啊AB环境下的调用及使用。并根据Mex接口的
相关功能。对MATLAB数据采集系统的设计在理论上进行了探讨,以图对MATLAB功能进行进一步
的扩展。
关键词:MATLAB:接口;数据采集
Research of Data—Collection System Based onⅣ队TLAB
Wang Hailong,Chen Shanjie,Li Qian,Zhang Peng,Ku Tao,Xu Dahua
(Co//ege ofEngieering,Nanjing Agriculture University,Nanjing 210031)
Abstract:Since MATLAB can not write directly to hardware available for operation.and it lacks of a re。
al-time,it works on the applications has been significantly hampered.MATLAB applications through rede—
ployment C++language interface Mex.Achievable in the MATI。AB environment for the specific hardware
interface signals.Therefore,author of a paper details Mex interfaces,inchding interfaces Mex various spe—
cial functions,and specific translation rules for the preparation of detailed,enuncimed the transfer and the
use of Mex interfaee in the MA’nAB environment.And in accordance with the relevant functional interface
Mex.MATIAB data acquisition system for the design in theory explored in a bid to further expand the
functions of MA7n。AB.
Key words:MA,11AB,Interface,Data collection
MATLAB产品系列被广泛地应用于包括信号与
图像处理、控制系统设计、通讯、系统仿真等诸多领域。
它的一大特性是有众多的面向具体应用的工具箱和仿
真块,包含了完整的函数集用来对信号图像处理,控制
系统设计,神经网络等特殊应用进行分析和设计。其他
的产品延伸了MATLAB的能力,包括数据采集,报告
生成,和依靠MATLAB语言编程产生独立C/C++代
码等等。
正因为其强大的科学计算与可视化功能、简单易
用的开放式可扩展环境以及所拥有的各种面向不同领
域而扩展的工具箱(ToolBox)t11,使得MATLAB在许多
学科领域中成为计算机辅助设计与分析、算法研究和
应用开发的基本工具和首选平台。
但是,MATLAB也存在局限性,就是不能直接对
硬件端口进行读写操作,从而影响了它在测控系统开
发上的应用范围。但它提供了应用程序接口API,通过
该接口,用户可以方便地完成MATLAB与外部环境
的交互(如图1所示)。为此,如何通过接口文件调用其
它语言编写的程序(如C_卜}),再通过其实现对硬件端
口的读写操作,最终实现在单一MArⅡAB环境中进
行测控系统的开发,便成了一项值得探讨和研究的问
题。
1 MATLAB应用程序接口文件Mex
MATLAB应用程序接口(APD主要包括3部分:
Mex文件(外部程序调用接13),Mat文件(数据输入输
出接口)及MATLAB计算引擎函数库。它们实现的一
般功能分别为:(1)在MATLAB环境中调用C/c++
语言或FORTRAN语言编写的程序,以提高数据处理
效率;(2)向MATLAB环境传送数据或从MATLAB
环境接收数据,即实现MATLAB系统与外部环境的
数据交换;(3)在MATLAB和其他应用程序间建立客
户机/服务器关系,将MATLAB作为一个计算引擎,
在其他应用程序中调用从而降低程序设计的工作量。
以下重点介绍Mex文件的应用。
1.1眦X是一种动态链接的子程序,其具体功能如下
(1)对于某些已有的C程序,可以通过Mex方式
在MATLAB环境中直接调用;
(2)对于影响MATLAB执行速度的FOR__I,OOP
等循环体,可以编写相应的C程序完成相同功能,并
编译成Mex文件,提高运行速度;
(3)对于A/D或D/A卡,或其他PC硬件,可以直
接用Mex文件进行访问,扩展MATLAB的功能;
(4)利用MEX文件,还可以使用一些软件,如
Windows的用户界面资源等。
1.2 Mex文件的编程规则
(1)编制自己的C++算法程序;
(2)编制MEX源文件代码;
MEX文件的源文件主要有两个部分组成:
①计算子例行程序(Computational Routine)。它是
链接的外部子程序,包含所有要完成计算功能的源代
码,用来完成实际的计算工作。
②入口子例行程序(Gateway Routine)。它是计算
子例行程序和MATLAB环境之间的接口,用于完成
两者间的数据交互。入口子例行程序是MATLAB调
用C抖程序所必需的部分,计算子例行程序可以由入
口子例行程序调用以完成其特定的功能要求。入口子
例行程序具体的使用格式如下:
#include"mex.h"void MexFunction(int nlhs,
mxArray牛pills[],
int nrhs,const mxArray·prhs[])
{
//C语言代码
)
其中,入口子程序的函数名必须为MexFunction。
prhs为一个结构体类型的指针数组,该数组元素按顺
序指向所有的输入参数;nrhs为输入参数的个数;plhs
与prhs的类型一致,它指向所有的输出参数;nlhs表
示输出参数的个数。该函数通过prhs获得输入数据,
对这些输入数据的处理后经由plhs获得结果,该结果
作为输出数据与其它程序进行数据交互嘲。
1.3 Mex文件的编译和调用
在编译Mex文件之前,必须先在MATLAB下安
装好Mex编译器,安装方法如下:在MATLAB命令窗
口中输入mex.setup然后按照提示向导逐步安装即
可。
Mex文件在MATLAB命令窗口中直接编译,方
式如下:mex filename,然后按回车键,如果编译通
过,系统就会生成同名字的DLL文件,在以后的程序
中可以像调用MATLAB的内建函数一样直接调用此
函数。原理如图2。
由上可知,Mex文件可以作为一个MATLAB的
内建函数来处理,但这个函数又具有强大的接口功能,
可以完成对硬件端口信号的读写操作。其对硬件端口
读写操作的总流程如图3所示:
2基于MATLAB的数据采集系统的概念设计
拟采用MATLAB和C的交互编程来处理数据采
集问题,这样系统不仅具有传统计算机数据采集系统
的全部功能,而且还具有很强的数据处理能力,实际上
构成了智能虚拟仪器t3]。
初步设计系统由三个模块构成,MATLAB模块的
功能包括图形显示和存取、数据分析和处理等,C语言
模块主要实现串行通信功能,而硬件设备则完成对物
理量的变换[4,5/。如图4所示。
当采样对象确定后硬件设备也就随之而定,而C
语言部分实现通信功能也是固定的,故所有的数据处
理功能设置都在MATLAB环境中的人机界面中实
现。该系统的3个界面实现功能如下。
主界面主要由一个图形框和4个按钮构成。图形
框借助于MATLAB的图形处理功能,以最佳匹配模
式动态显示实时采样数据,实现自动示波器功能。4个
按钮名称分别尚酽设置串口”、“开始采集”、“数据处理”
和“退出系统”,鼠标点击即可实现相应功能。
在主界面选择了“串口设置”后,就进入通信协议.
设置界面。这个界面主要由5个弹出式菜单和2个按
钮构成,弹出式菜单的名称和选项分别是:端口选择
(COMI--COM4)、波特率(300-19200)、数据位m8)、停
止位(o~2)和校验位(无、奇、偶),而2个按钮则分别对
所设参数进行确认或者修正。
在主界面选择了“数据处理,,后,则进入数据处理
界面。这个界面的功能与采样对象有关,需由用户自己
针对任务要求进行编程。
3结束语
MATLAB具有各种丰富的数值运算及图形处理
功能,大量实用控制工具箱的存在更为其控制应用奠
定了坚实的基础;而C语言则对硬件系统具有强有力
的处理能力,可方便地实现数据采集、串行通讯等功
能嘲。Mex文件是MATLAB调用C++和其他语言(如
Visual Fortran等)的简易接口,它极大地扩展了
MATLAB的应用范围,使MATLAB系统成为真正意
义上的开放的、功能完善的、自包容的程序设计和数据
处理集成环境Isl。
参考文献
【l】王正林,王盛开,陈国顺.MATLAB/Simulink与控制系统仿真嗍.
北京:电子工业出版社,2005:11-13.
【2】张威.MATLAB外部接121编程嗍.西安:西安电子科技大学出版
社,2004:50-85.
【3】廖良斌,喻方平.基于DSP和USB的图像采集系统的研究叨.武汉
理工大学学报(交通科学与工程版),2006,.30(1):120.123.
[4】申鼎才,郭庆平.基于Interact的分布式数据采集与分析在岩土工
程中的应用研究明.武汉理工大学学报(交通科学与工程版),
2005,29(6):974-976,992.
【5】王志冰,李汉强.基于USB总线的数据采集系统的设计与实现叨.
武汉理工大学学报(交通科学与工程版),2005,29(5):758.761.
[6】杨义伟,蒋大明,戴胜华.驼峰信号微机监测系统的数据采集阴.武
汉理工大学学报(交通科学与工程版),2005,.29(1):154-156.
[7】杨健,张慧慧.基于DSP和ARM的网络化数据采集与信号分析终
端田.计算机工程,2006,32(8):269-271.
【8】李尧坤,史忠科,毕业等.Matlab在基于B/S模式的决策支持系统
中的应用叨.计算机工程,2006,32(5):255-256,282.

阅读全文

与matlab外部接口编程pdf相关的资料

热点内容
vm同步命令 浏览:13
安卓转移到ios王者荣耀怎么登 浏览:954
工业压缩机品牌 浏览:181
苹果系统怎么更改app的图标 浏览:667
泰剧女同电影 浏览:435
人造变异女的电影 浏览:237
怀旧经典老录像片 浏览:593
和利时功能块怎么加密 浏览:30
宣萱电影好看 浏览:568
韩国纯真时代动态图 浏览:100
关于男主有个能操控别人 浏览:303
怎么测试doh加密 浏览:210
欧美 小说 图片 浏览:908
西安程序员未来的发展趋势 浏览:173
叫阿能的电影 浏览:261
客车购票小程序源码 浏览:645
程序员用数据表白灵魂伴侣 浏览:485
spin命令行 浏览:376
百合txt下载 浏览:61
房贷结清合同是不是解压了 浏览:109