915199-MATLAB程序设计与应用-第13章 MATLAB外部程序接口技术
MATLAB与外部程序接口
![MATLAB与外部程序接口](https://img.taocdn.com/s3/m/455596b1482fb4daa58d4ba4.png)
• 15.1.1 MEX文件 • MEX文件是一种具有特定格式的文件;是
能够被MATLAB解释器识别并执行的动态链 接函数。它可由C语言等高级语言编写。
15.1.2 mx-函数库和MEX文件的区别
• 1.mx-函数库 • 2.mex-函数库
15.3 MATLAB可执行程序
• 15.3.1 接口函数mexFunction • 接口函数mexFunction的调用格式如下: • void mexFunction(int nlhs,mxArray
*plhs[],int nrhs,const mxArray *prhs[])
15.3.2 在Visual C++中实现 MATLAB可执行程序
• 下述程序输出一个正弦曲线,其中 mexCallMATLAB调用了MATLAB中的绘 图函数。
15.2.2 FORTRAN语言MEX文件
• 与C语言相同,FORTRAN语言也可以实现 同MATLAB语言的通信。相应地,基于 FORTRAN语言的MEX文件也是MATLAB应 用程序接口的重要组成部分。
15.1.3 MAT文件
• MAT文件是MATLAB数据存储的默认文件 格式,在MATLAB环境下生成的数据存储时, 都是以.mat作为扩展名。MAT文件由文件 头、变量名和变量数据三部分组成。
15.2 MEX文件的编辑与使用
• 15.2.1 C语言MEX文件的编写 • 例:传递一个数量 • 这是一个C语言程序,用来求解一个数量
• 创建DLL工程 • 选择静态链接的MFC类库 • 设定输出函数 • 环境设置 • 编写DLL主程序
的2倍。 • 例:传递字符串 • 这个函数的功能使将输入字符串反序排列。
• 例:传递多个输入或输出变量
matlab程序设计与应用第二版习题答案
![matlab程序设计与应用第二版习题答案](https://img.taocdn.com/s3/m/35513f4c7dd184254b35eefdc8d376eeaeaa17d9.png)
matlab程序设计与应用第二版习题答案Matlab程序设计与应用第二版习题答案Matlab是一种强大的数学软件,广泛应用于科学计算、数据分析和工程设计等领域。
《Matlab程序设计与应用》是一本经典的教材,对于学习和掌握Matlab编程语言具有重要的意义。
本文将为大家提供《Matlab程序设计与应用第二版》中部分习题的答案,帮助读者更好地理解和应用Matlab。
第一章:Matlab基础1.1 基本操作1. a = 3; b = 4; c = sqrt(a^2 + b^2); disp(c);2. x = linspace(-pi, pi, 100); y = sin(x); plot(x, y);3. A = [1 2 3; 4 5 6; 7 8 9]; B = [9 8 7; 6 5 4; 3 2 1]; C = A + B; disp(C);1.2 控制结构1. for i = 1:10disp(i);end2. n = 0; sum = 0; while sum < 100n = n + 1;sum = sum + n;enddisp(n);3. x = 5; if x > 0disp('x is positive');elseif x < 0disp('x is negative');elsedisp('x is zero');end第二章:向量和矩阵运算2.1 向量运算1. A = [1 2 3]; B = [4 5 6]; C = A .* B; disp(C);2. A = [1 2 3]; B = [4 5 6]; C = A ./ B; disp(C);3. A = [1 2 3]; B = [4 5 6]; C = dot(A, B); disp(C);2.2 矩阵运算1. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A * B; disp(C);2. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = B * A; disp(C);3. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A .* B; disp(C); 第三章:函数和脚本文件3.1 函数1. function y = myfunc(x)y = x^2 + 3*x + 2;end2. function [y1, y2] = myfunc(x1, x2)y1 = x1^2 + 3*x1 + 2;y2 = x2^2 + 3*x2 + 2;end3. function [y1, y2] = myfunc(x)y1 = x^2 + 3*x + 2;y2 = sin(x);end3.2 脚本文件1. x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y);2. x = linspace(-10, 10, 100); y = x.^2 + 3*x + 2; plot(x, y);3. x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = cos(x); plot(x, y1, x, y2);通过以上习题的答案,读者可以对Matlab程序设计的基本语法和常用函数有一个初步的了解。
MATLAB外部接口
![MATLAB外部接口](https://img.taocdn.com/s3/m/cb02f5df49649b6648d74793.png)
在如下图所示的对话框中输入 “MATLABinit”,单击【执行】按钮后即 可启动Excel link,并同时启动MATLAB。
3.Excel link的终止
当终止 Excel 的时候, Excel link 和 MATLAB会被同时终止。
如果需要在Excel环境中终止MATLAB和
Excel link的运行,则在工作表单元中输
2 编 译 器
2.1 编译器概述 2.2 编译器的安装和配置 2.3 编译器的使用
MATLAB编译器是指将M文件作为 其输入,同时生成独立的可执行文件 或相关软件组件的程序,它可以由命 令mcc调出。
2.1 编译器概述
MATLAB编译器4.0版本采用了MATLAB
Component Runtime(MCR)技术。 MCR提供了对MATLAB语言的完全支 持。
入“=MLClose()”即可,如下图所示。 当 需要重新启动Excel link和MATLAB时,
可以使用MATLABinit命令。
4.Excel link使用时需要注意的 几个问题
Excel link函数名对字母的大小写不作区
ቤተ መጻሕፍቲ ባይዱ
分,而MATLAB函数名是区分大小写的。
Excel工作表等式通常以“+”或“=” 作为起 始标记。
情况:代码以命令clear开始;重新启动 计算机后,再执行M-book文档中的程 序;将M-book文档的代码拷贝到M文 件,再到MATLAB的命令窗口执行。
M-book文档的代码运行速度要比在
MATLAB命令窗口中执行慢很多。
当编辑科技论文或其他文档时,最后可将
细胞转换为普通文本。
可使用Notebook菜单中的【Bring
Matlab及其应用
![Matlab及其应用](https://img.taocdn.com/s3/m/4f4a24ccda38376baf1fae2e.png)
函数的输入变量数目 函数的输出变量数目 最小的可用正实数 最大的可用正实数
26
2.4.2 复数
不需要特殊的处理。复数可以表示为: a=10-9i 复数运算不需要特殊处理,可以直接进行
Matlab及其应用
27
2.4.3 显示格式
MATLAB中所有的量为双字长浮点数,显示按 下面显示规则:
7
1.1 MATLAB的出现
70年代中期,Cleve Moler和他的同事开发了 LINPACK和EISPACK的Fortran子程序库 70年代末期,Cleve Moler 在新墨西哥大学给学 生开线性代数,为学生编写了接口程序,这程序取 名为MATLAB,即MATrix LABoratory 1983年春天,工程师John Little与Moler、 Steve Bangert一起开发了第二代专业版MATLAB 1984年,MathWorks公司成立,MATLAB正是推 向市场。
MATLAB常用的关系操作符有:<(小于)、<=(小于或等于)、 >(大于)、>=(大于或等于)、 = =(等于)、 !=(不等于)。 MATLAB的关系操作符可以用来比较两个大小相同的数组,或者 比较一个数组和一个标量。在与标量比较时,结果和数组大小一 样。 »a=1:9; b=a>4 b= 0 0 0 0 1 1 1 1 1 »c=a(a>4) c= 5 6 7 8 9
符号函数 留数 正弦 余弦 正切 反正弦 反余弦 反正切 第四象限反正切
函数名 sinh cosh
tanh exp log log10 bessel gamma rat
含义 双曲正弦 双曲余弦
双曲正切 自然指数 自然对数 以10为底的对数 贝赛尔函数 伽吗函数 有理逼近
matlab接口简介
![matlab接口简介](https://img.taocdn.com/s3/m/33c3b7202f60ddccda38a093.png)
MATLAB具有强大的矩阵处理、数值计算以及作图功能。
能否使matlab与其他的程序设计语言甚至外部仪器和设备进行通话呢?即在其他的程序设计语言中调用matlab,或者在matlab中调用其他的程序设计语言编写的函数或子程序,或者将外部设备的数据直接输入matlab工作空间进行处理,从而发挥他们各自的优势,为特定的应用服务。
作为目前市面上作为强大的科学计算软件,matlab也实现了从多与外部程序或设备的接口。
通过mex文件的建立,matlab能够调用c、c++、fortran的程序设计语言的子程序;通过使用matlab引擎,可在c、c++、fortran程序代码中直接调用matlab中的函数与命令;通过matlab c/c++数学函数库直接实现c/c++与matlab的混合编程,并建立可独立运行程序;通过matlab提供的串口接口,可以实现从外部设备(如modem)直接输入数据到matlab 工作空间,再利用matlab进行处理。
1.MEX文件mex文件是按一定格式使用c/c++、fortran等语言编写的动态链接库函数,在windows 操作环境中,其后缀名为dll(dynamic link library),它的主要目的是在matlab中调用c/c++和fortran编写的子程序。
她是matlab的一类外部程序调用接口,可以在matlab系统象调用matlab的内建函数一样调用已经存在的用c/c++、fortran语言编写的子程序,而无需将他们重新编写为matlab的m文件,从而使资源得到充分利用。
mex文件是一种动态链接库的子程序,这些子程序可由matlab解释器自动载入并执行。
调用mex文件与调用matlab的内建函数的方式完全相同,只需在matlab命令提示符下键入mex文件名即可,当然,该mex文件必须位于matlab的当前工作目录下。
mex文件有以下一些用处:①、对于原先已经存在的c/c++、fortran程序,只需编写一个与matlab的接口,就可以在matlab里面直接调用,而不必重新编写m文件②、对于那些在matlab中执行效率不高的语句(如循环体),可以把他们放在c/c++、fortran中编写并编译,从而提高执行效率。
MATLAB和其他软件数据连接
![MATLAB和其他软件数据连接](https://img.taocdn.com/s3/m/9291300fed630b1c59eeb599.png)
MATLAB和Excel数据连接
Excel Link 的使用
直接把数据输入到Mຫໍສະໝຸດ TLAB中3. 单击“putmatrix”按钮弹出一个菜单,根 据菜单提示将Excel中数据用鼠标选定, 传输到MATLAB中变量名为ytg_000088, 然后单击“确定”按钮
3. 4. 5.
6.
25
7.
MATLAB和Excel数据连接
Excel Link 的使用
MATLAB中自带Excel文件介绍
用二叉树方法计算欧式看跌期权价格
1. 打开”sheet4”,数据B4:B10名称是bindata ,分别存放股票价格、行权价、 无风险利率、期权存续期(5/12)、时间离散步长(1/12)、股票标准差 以及是否是欧式(美式)期权,B15开始存放二叉树各节点价格 asset_tree,B23开始存放现金流value_tree 2. 激活D5单元,将Excel中bindata传到MATLAB变量b中,激活D12单元,调 用MATLAB中计算二叉树函数binprice,其二叉树数据结果保存在变量p中, 价格保存在变量o中。激活D11、D12,分别保存在MATLAB变量 asset_tree与value_tree中,注意B15与B23分别是asset_tree与 value_tree的起点。
MATLAB和Excel数据连接
Excel Link 的使用
简易方法将Excel数据导入MATLAB
1. 在Excel中建立一个数据文件
Excel Link 的使用
数据管理函数
函数 MATLABfcn MATLABsub 作用 对于给定的Excel数据运 行MATLAB命令 对于给定的Excel数据运 行MATLAB命令,并制 定输出位置 函数 MLAppendMatrix MLPutMatrix 作用 向MATLAB 工作区添加 Excel数据表 用Excel数据表创建或覆 盖MATLAB数据 用Excel数据表VBA创建 或覆盖MATLAB数据 向Excel数据表VBA写 MATLAB数据内容
Matlab外部程序接口应用研究
![Matlab外部程序接口应用研究](https://img.taocdn.com/s3/m/85a6b3a6f524ccbff12184ba.png)
% # &
! [ 7 A L 7 P> >ee 函数库 包括 > 函数 库 和 >e e 函 数 两个库提供的 函 数 基 本 一 致 " 只不过一个是在 > 库" 中调用 t; 函数库的核心是 而 >e e 函 数 库 的 则 是 .N4 . X 4 E E 7 E E 7 R 结构体 " R 类* ! 函 数 库 中 提 供 的 函 数 包 括 以 下 类 > >e e ( # 阵列访 [ 7 A L 7 P 内建函 数 库 $ [ 7 A L 7 P [ 文 件 函 数 库$ 问和创建函数库 * 这些丰富的计算函数都可 以 供 实际 应用使用 " 从而扩 展 应 用 的 计 算 功 能 * ! [ 7 A L 7 P> >e 用户自 e 函数库是 [ 7 A L 7 P 编 译 器 正 确 工 作 的 基 础* 己创建的 [ 文件中 的 [ 7 A L 7 P函数因为有了 [ 7 A L 7 P ! 使得 [ 文件可以正 > >ee 函数 库 中 的 相 应 函 数 " 确地转换 为 > ! 这样就实现了 [ >e e 文 件 * 7 A L 7 P的 计算函数向外部输出 *
" $> $@ %* > G L L C CG QZ L C J A E ? J 7 LZ 8 ? 8 C C E ? 8 8 Q G E . 7 A ? G 8/ J ? C 8 J C = ? 8 72 = E C CF G E C <c 8 ? D * ? J = 7 8 + ( " " !$ 9 9 9 _^ 9 9+ & $ $ $ & > = ? 8 7 !* / J = G G L G Q6 7 A C E: C < G ; E J C < 7 8 OU O E G G N C E 6; = 7 8c 8 ? D * 6; = 7 8+ ( " " & ! > = ? 8 7 (* 4 E J = ? A C J A ; E $ R M $ $ $ # 7 LK C < ? 8 _: C < C 7 E J =^ 8 < A ? A ; A C > = ? 8 72 = E C CF G E C <c 8 ? D *@ ? J = 7 8 + ( " " ! > = ? 8 7 9 9 9+ ! ; / 8 & % 6 8 ^ 8G E O C E A G; A ? L ? B C ? A < J 7 L J ; L 7 A ? G 8 Q ; 8 J A ? G 8$[ 7 A L 7 PM E G D ? O C <G A = C EM E G E 7 .. ? 8 L 7 8 ; 7 CN ? A =C X A C E $ ! 9 9 9 9 $ 8 7 LM E G E 7 .? 8 A C E Q 7 J C *2 = CM 7 C EO C < J E ? P C <A = C< A E ; J A ; E CG Q[ 7 A L 7 PC X A C E 8 7 LM E G E 7 .? 8 A C E Q 7 J C 7 8 O. 7 ? 8 L 9 M 9 R O ? < J ; < < C < A = C. C A = G O; < ? 8 7 A L 7 PJ 7 L J ; L 7 A ? G 8Q ; 8 J A ? G 8! C < A 7 P L ? < = ? 8 8 7 . ? J L ? 8 L ? P E 7 E < ? 8 7 A L 7 PC X A C E $ 9[ 9O R R; 9[ 8 7 L E G E 7 .? 8 A C E Q 7 J C * K C D C L G . C 8 A L 7 8 ; 7 CG Q A C 8C 8 J G ; 8 A C E <M 7 E 7 . C A C E A E 7 8 < Q C E C E E G EO ; E ? 8 7 L L ? 8 8 7 . ? J M 9 M 9 9 9J 9O R L ? 8 -L ? P E 7 E *4 L ? 8 < < ? < A 7 8 A Q ? L C < < ; J J C < < Q ; L L G L D C < A = ? <M E G P L C .* 2 = CM 7 C E ? L L ; < A E 7 A C < A = C; < CG Q[ 7 A L 7 P R M M R 97 R< M $ J G .. C 8 A ? <. 7 O C; G 8[ 7 A L 7 P C X A C E 8 7 L E G E 7 .? 8 A C E Q 7 J CN ? A =A = C C X 7 . L CG Q < C C ? 8 7 A E ? X h <G E O C E * ‘ ? 8 7 L L M M 9 M 9. R C X A C E 8 7 LM E G E 7 .? 8 A C E Q 7 J C * 9 & & 7 E 7 . C A C E A E 7 8 < Q C E < , = ( & 5 / J ? C 8 A ? Q ? JJ 7 L J ; L 7 A ? G 8& 7 A L 7 P ? 8 A C E Q 7 J C 8 7 . ? J L ? 8 -L ? P E 7 E !M !< ![ !O R R ’ 它拥 7 A L 7 P是 世 界 上 最 优 秀 的 科 学 计 算 软 件* !! [ 有强大的科学计算与可视化功能 % 简单易 用 的 开 放 式 可扩展环境以及 ( " 多个面向不同领域而 扩 展 的 工 具 箱支持 $ 使得 [ 7 A L 7 P在许多学科领域成为算法设计 %( 与实现的 首 选 平 台 ’ 但 是$ 数 * [ 7 A L 7 P 在 人 机 交 互% 据采集等方面没有 3 ]% H ]% 3 > 等可视化开发 工 具 强 大* 对于某些需 要 大 量 计 算 的 应 用 $ 如水库调度单纯 利用 [ 则系统界面单调 $ 不便于用户 7 A L 7 P 进行开发 $ 使用 & 采集数据 也 不 方 便 * 而采用 3 ] 等工具进行开 发$ 则科学计算编程 的 工 作 量 很 大 * 如果利用 [ 7 A L 7 P 进行科学计算 $ 3 ]等可视化开发工具进行界面等其 他方面的编程 $ 将 会 发 挥 各 自 的 专 长$ 这些需要大量 计算的应用将 得 以 很 好 地 实 现 * 正 是 基 于 此$ [ 7 A L 7 P 提供了外部程序接口 $ 方便其他开发工具使用其强大 的计算功能 * [ 7 A L 7 P 外部程 序 接 口 由 两 部 分 组 成 ! [ 7 A L 7 P编 ’ !( 译器和 > ) >e e 函 数 库 * [ 7 A L 7 P编译器能将 [ 7 A $ L 7 P 环境下 编 写 的 [ 文 件 转 换 成 > 或 >e e 文 件 *
915200-MATLAB程序设计与应用-第13章 MATLAB外部程序接口技术__源程序
![915200-MATLAB程序设计与应用-第13章 MATLAB外部程序接口技术__源程序](https://img.taocdn.com/s3/m/fe296fc5a417866fb84a8eb1.png)
第13章MATLAB外部程序接口技术例13-1计算当x=[0.0,0.1,0.2,…,1.0]时,f(x)=e x的值,并将结果写入文件demo1.txt。
程序如下:x=0:0.1:1;Y=[x;exp(x)];fid=fopen('demo1.txt','w');fprintf(fid,'%6.2f %12.8f\n',Y);fclose(fid);例13-2 读出例13-1生成的文件demo1.txt中的数据。
程序如下:fid=fopen('demo1.txt','r');while 1line=fgetl(fid);if line<0breakenddisp(line)endfclose(fid);例13-3假定文件textdemo.txt中有以下格式的数据:Name English Chinese MathmaticsWang 99 98 100Li 98 89 70Zhang 80 90 97Zhao 77 65 87此文件第一行为标题行,第2~5行的第1列为字符型,后3列为整型。
从该文件中将前3个数据读入到grades的程序段如下:fid=fopen('textdemo.txt','r');grades=textscan(fid,'%s %d %d %d',3,'headerlines',1);例13-4 假设文件alphabet.txt的内容是按顺序排列的26个大写英文字母,读取前5个字母的ASCII和这5个字符。
程序如下:fid=fopen('alphabet.txt','r');c=fread(fid,5);frewind(fid);d=fread(fid,5,'*char');fclose(fid);1例13-5 建立一数据文件magic5.dat,用于存放5阶魔方阵。
matlab程序设计与应用第三版
![matlab程序设计与应用第三版](https://img.taocdn.com/s3/m/c0c682a2ba4cf7ec4afe04a1b0717fd5370cb20a.png)
matlab程序设计与应用第三版MATLAB程序设计与应用第三版是一本深入介绍MATLAB编程语言及其在工程和科学领域应用的专业书籍。
本书适合于初学者和有一定MATLAB 基础的读者,旨在帮助他们更深入地理解MATLAB的编程技巧和应用方法。
第一章:MATLAB简介MATLAB是一个由MathWorks公司开发的数学计算软件,广泛应用于工程计算、数据分析、算法开发等领域。
它以其强大的数值计算能力、丰富的函数库和友好的用户界面而受到广泛欢迎。
第二章:MATLAB基础本章将介绍MATLAB的基本操作,包括变量定义、矩阵操作、基本数学运算等。
同时,也会介绍MATLAB的基本数据类型,如向量、矩阵、数组等,以及它们的基本操作。
第三章:MATLAB编程基础在这一章中,将介绍MATLAB的编程基础,包括控制流语句(如if-else语句、for循环、while循环等)、函数的定义和调用、以及局部变量和全局变量的概念。
第四章:MATLAB图形用户界面MATLAB提供了丰富的图形绘制功能,本章将介绍如何使用MATLAB绘制二维和三维图形,以及如何创建交互式的图形用户界面(GUI)。
第五章:MATLAB高级编程技巧随着MATLAB编程技能的提升,本章将深入探讨一些高级编程技巧,如面向对象编程、异常处理、以及代码优化等。
第六章:MATLAB在数学建模中的应用数学建模是MATLAB的一个重要应用领域。
本章将介绍如何使用MATLAB 进行数学建模,包括线性代数、微分方程、最优化问题等。
第七章:MATLAB在信号处理中的应用信号处理是电子工程和通信工程中的一个重要分支。
本章将介绍MATLAB在信号处理中的应用,包括信号的生成、滤波、傅里叶变换等。
第八章:MATLAB在图像处理中的应用图像处理是计算机视觉领域的一个关键技术。
本章将介绍MATLAB在图像处理中的应用,包括图像的读取、显示、变换、滤波和分析等。
第九章:MATLAB在控制系统中的应用控制系统是工程领域中的一个核心主题。
MATLAB程序设计与应用(第二版)
![MATLAB程序设计与应用(第二版)](https://img.taocdn.com/s3/m/b1fb0e465bcfa1c7aa00b52acfc789eb172d9ebe.png)
成书过程
《MATLAB程序设计与应用(第二版)》在第一版的基础上修订而成。
第二版第1~4、8、9章由刘卫国编写,第5、6章由蔡立燕编写,第7章由陈昭平编写,第10章由刘卫国、张颖 编写,第11章由蔡旭晖编写,第12章由刘卫国、易昆南、范臻辉、谢华、刘国强编写,实验部分由刘卫国、蔡立 燕、蔡旭晖、吴相智编写。全书由刘卫国修改定稿。编写过程中,唐文胜老师提出了修改意见。
第二版以MATLAB 7.0版为蓝本介绍了MATLAB的功能与应用,分为基础篇、应用篇和实验篇。基础篇包括 MATLAB系统环境、MATLAB数据及其运算、MATLAB矩阵分析与处理、MATLAB程序设计、MATLAB绘图、MATLAB数值 计算、MATLAB符号计算;应用篇包括MATLAB图形用户界面设计、MATLAB Notebook的使用、MATLAB Simulink仿 真软件、MATLAB外部程序接口技术、MATLAB的应用;实验篇和教学内容相配合,包括15个实验。
该书注重在讲清有关数学方法和算法原理的前提下,介绍MATLAB的功能;注重和有关学科领域的结合,突出 应用。书中有许多应用实例,这些实例既是对MATLAB重点和难点的诠释,又可以帮助读者应用MATLAB来解决实际 问题,具有代表性。
作者简介
刘卫国,博士,中南大学计算机学院教授,教育部大学计算机课程教学指导委员会委员,主要研究领域为络 与信息安全、软件工程、计算机教育。先后主持完成省部级教学改革项目10余项,曾获湖南省教学成果二等奖 (2001年)、三等奖(2016年)、湖南省普通高等学校优秀教材奖(2009年)、全国高校出版社优秀畅销书一等 奖(2008年),中南大学茅以升铁路教育专项奖(教学专项奖)(2000年)。主编出版计算机系列教材30余部, 其中普通高等教育国家级规划教材3部,主持湖南省精品在线开放课程、中国高校计算机教育MOOC联盟优秀课程1 门。
MATLAB外部程序接口技术
![MATLAB外部程序接口技术](https://img.taocdn.com/s3/m/221a15abb9d528ea81c77984.png)
第十一章MATLAB外部程序接口技术11.1M编译器的功用和前提准备11.2创建MEX文件11.2.1MEX文件编译的验证【例11.2-1】验证mex应用程序把C码文件编译成MEX文件的正确性。
(1)先将matlab\extern\examples\mex目录下的yprime.c文件复制到用户自己的工作目录(比方d:\mywork),然后将此文件名改为my_yprime.c。
(2)运行以下指令cd d:\myworkmex my_yprime.cmy_yprime(1,1:4)which my_yprimeans =2.0000 8.9685 4.0000 -1.0947d:\mywork\my_yprime.dll〖说明〗应该指出:mex的编译操作也可以象图11.2-1那样在DOS环境中进行,结果相同。
图 11.2-1 在DOS状态下进行编译操作【例11.2-2】验证mcc应用程序把M码文件编译成MEX文件的正确性。
(1)先将matlab\extern\examples\mex目录下的yprime.m文件复制到用户自己的工作目录(比方d:\mywork),然后将此文件名改为my_yprime_m.m。
(2)运行以下指令cd d:\mywork %把用户目录指定为当前目录mcc -x my_yprime_mmy_yprime_m(1,1:4)which my_yprime_mans =2.00008.96854.0000-1.0947d:\mywork\my_yprime_m.dll11.2.2由M文件创建C MEX文件的算例【例11.2-3】先编写一个“判断方阵是否奇异”的M文件,然后由该M文件生成相应的MEX文件。
(1)在MATLAB的编辑器中,编写下面的函数文件exm1.m 。
[exm1.m]function y=exm1(A)[m,n]=size(A);if m~=n;error('An input matrix should be n-by-n.')endr=rank(A);if r==mdisp('This matrix is nonsigular')elsedisp('This matrix is sigular')end(2)把该函数文件存放于用户目录d:\mywork下。
第9讲_Matlab外部程序接口
![第9讲_Matlab外部程序接口](https://img.taocdn.com/s3/m/ac6cb370852458fb770b56f3.png)
按行读取数据
1.fgetl函数:按行从文件中读取数据,但不读 取换行符。
line=fgetl(fid)
2.fgets函数:用于从文件中读取行、保留换行 符并把行作为字符串返回。
(1)line=fgets(fid) (2)line=fgets(fid,nchar)
例
编写一个程序,用于读取例1生成的数据。 程序 fid=fopen(‘E:\my.txt','r'); while ~feof(fid)%在文件没有结束时按行读取数据
MATLAB中基本的文件I/O指令:
1.打开和关闭文件
fopen、fclose
2.格式读写
fprintf、fscanf、fgetl、fgets
3.非格式读写
fread、fwrite
4.文件定位和状态
feof、fseek、ftell、ferror、frewind
文件的打开与关闭
二 MATLAB数据接口
MATLAB提供多种方法支持将磁盘文件和剪贴 板中的数据导入到MATLAB的工作区,最简单的办 法是使用数据导入向导(可通过选择“File”菜单中 的“Import data”命令或在命令窗口执行命令 “uiimport”来激活它),而在M文件中则可以使用 MATLAB输入/输出函数。
[ fid, message]=fopen(‘file’,’r’); if fid==-1 disp(message); end
fid = 0 标准输入文件(键盘) fid = 1 标准输出文件(屏幕) fid = 2 标准存错信息文件
2.fclose 功能:关闭一个或多个已打开的文件。
格式一: status=fclose(fid) 关闭指定文件,返回0表示成功,返回-1表示失败。
MATLAB程序设计与应用课件
![MATLAB程序设计与应用课件](https://img.taocdn.com/s3/m/1473fa5584868762caaed5ed.png)
《MATLAB程序设计与应用》实验指导书山东建筑大学信息与电气工程学院电子信息教研室前言一、实验目的本课程是电气工程及其自动化、自动化、电力工程与管理专业本科生的学科基础选修课,它在线性代数、信号分析和处理、控制系统设计和仿真等方面有着广泛的应用。
主要是学习MATLAB的语法规则、基本命令和使用环境,使学生掌握MATLAB的基本命令和基本程序设计方法,提高使用该语言的应用能力,具有使用MATLAB语言编程和调试的能力,以便为后续多门课程使用该语言奠定必要的基础。
通过上机实验,使学生掌握MATLAB在线帮助功能的使用、熟悉MATLAB运行环境和MATLAB语言的主要特点,掌握MATLAB语言的基本语法规则及基本操作命令的使用,学会M文件的建立和使用方法以及应用MATLAB实现二维和三维图形的绘制方法,具有使用MATLAB语言编程和调试的能力。
二、实验前预习每次实验前,学生须仔细阅读本实验指导书的相关内容,明确实验目的、要求;明确实验步骤、测试数据及需观察的现象;复习与实验内容有关的理论知识;预习仪器设备的使用方法、操作规程及注意事项;做好预习要求中提出的其它事项。
三、实验注意事项1.实验开始前,应先检查本组电脑设备是否工作正常,matlab软件工作是否正常。
2.实验时每位同学应独立完成实验任务,避免抄袭。
3.实验后应及时将实验数据进行记录与存盘,避免因电脑故障或其它原因造成实验数据的丢失。
4.实验中严格遵循电脑操作规程,如电脑发生异常现象,应立即切断电源,报告指导教师检查处理。
5.测量数据或观察现象要认真细致,实事求是。
6.未经许可,不得对电脑进行软件及硬件的更改操作。
7.实验结束后,实验记录交指导教师查看并认为无误后,方可关掉电脑离开。
8.爱护公物,发生仪器设备等损坏事故时,应及时报告指导教师,按有关实验管理规定处理。
9.自觉遵守学校和实验室管理的其它有关规定。
四、实验总结每次实验后,应对实验进行总结,即实验数据进行整理,绘制波形和图表,分析实验现象,撰写实验报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第13章 MATLAB外部程序接口技术
13.2 MATLAB数据接口
MATLAB提供多种方法支持将磁盘文件和剪贴板 中的数据导入到MATLAB的工作区,最简单的办 法是使用数据导入向导(可通过在“主页”选项 卡“变量”命令组中选择“导入数据”命令按钮 或在命令行窗口执行uiimport命令来激活它), 而在M文件中则可以使用MATLAB文件操作函数。
第13章 MATLAB外部程序接口技术
(6)fwrite函数 fwrite 函数按照指定的数据类型将矩阵中的元素写入 到文件中,其调用格式为: count=fwrite(fid,A,precision) 例13-5 建立一数据文件magic5.dat,用于存放5阶魔 方阵。 程序如下: fid=fopen('magic5.dat','w'); cnt=fwrite(fid,magic(5),'int32'); fclose(fid);
第13章 MATLAB外部程序接口技术
(3)fgetl与fgets函数 除上述对文本文件进行读写操作的函数外,读取文本文 件的函数还有fgetl和fgets,它们按行读取数据,其调用 格式为: line=fgetl(fid) line=fgets(fid,nchar)
例13-2 读出例13-1生成的文件demo1.txt中的数据。 fid=fopen('demo1.txt','r'); while 1
C=textscan(fid,fmt,N,param,value)
例13-3 假定文件textdemo.txt中有以下格式的数据:
Name English Chinese Mathmatics
Wang
99 98
100
Li
98 89
70
Zhang 80 90
97
Zhao
77 65
87
从该文件中将前3个数据读入到grades的程序段如下:
x=fscanf(fid,'%5d',100);
y=fscanf(fid,'%5d',[10,10]);
第13章 MATLAB外部程序接口技术
(2)fprintf函数 fprintf函数可以将数据按指定格式写入到文本文 件中,其调用格式为:
count=fprintf(fid,fmt,A)
例13-1 计算当x=[0.0,0.1,0.2,…,1.0]时, f(x)=ex的值,并将结果写入文件demo1.txt。 程序如下: x=0:0.1:1; Y=[x;exp(x)]; fid=fopen('demo1.txt','w'); fprintf(fid,'%6.2f %12.8f\n',Y); fclose(fid);
例13-4 假设文件alphabet.txt的内容是按顺序排列的26个 大写英文字母,读取前5个字母的ASCII和这5个字符。 程序如下: fid=fopen('alphabet.txt','r'); c=fread(fid,5); frewind(fid); d=fread(fid,5,'*char'); fclose(fid);
第13章 MATLAB外部程序接口技术
13.2.2 MAT文件与应用
1.MAT文件 save命令可以将MATLAB系统内部数据保存为 MAT文件,而load命令可以将磁盘上的MAT文件 中的数据读入到MATLAB系统中。 MATLAB提供的用于操作MAT文件的API函数封 装于两个标准库文件中:libmat.lib和libmx.lib。 前者用于对MAT文件的操作,后者用于对MAT文 件中矩阵的操作 2.C语言MAT函数 用于在C程序中对MAT文件进行操作。
line=fgetl(fid); if line<0
break end disp(line) end fclose(fid);
第13章 MATLAB外部程序接口技术
(4)textscan函数
如果一个文件中的数据全部由ASCII字符组成,且 数据间有间隔符(如空格、逗号、分号、制表位), 则文件称为有格式文件。有格式文件可以使用文本 输入函数textscan读取数据,函数调用格式为:
[A,count]=fscanf(fid,fmt,size)
格式符 %d %u %o %x %e
含义 十进制整数 无符号的十进制整数 八进制整数 十六进制整数(0~9,a~f) 指数形式的实数
例如:
格式符 %f %g %c %s
含义 小数形式的实数 根据输出项的大小自动选择 e 格式或 f 格式 字符 不包含空格的字符串
功能
定义输入单元 定义自初始化单元 定义计算区 去除单元定义 删除选择的输出单元 定义单元组 将单元组转换为单个单元 隐藏单元标志 嵌入生成的图形 运行当前单元或单元组 运行计算区 运行 M-Book 文档中的所有输入单元 循环运行输入单元 将 MATLAB 调到前台运行 设置 Notebook 的选项
13.1.2 在Excel中使用MATLAB
通过Spreadsheet Link,可以在Excel工作区和 MATLAB工作空间之间进行数据交换,也可以使 用插件方式在Excel中调用MATLAB的算法。 1.Spreadsheet Link的安装与启动
第13章 MATLAB外部程序接口技术
2.Spreadsheet Link的操作 (1)将Excel表格中的数据导出到MATLAB工作空间 中 (2)从MATLAB工作空间导入数据到Excel表格中 (3)调用MATLAB函数进行运算
第13章 MATLAB外部程序接口技术
3.MAT文件的基本操作
在C程序中,通过指向MAT文件的指针对文件进 行操作,定义指向MAT文件的指针的格式为: MATFile *mfp; (1)打开MAT文件 mfp=matOpen(filename,mode)
第13章 MATLAB外部程序接口技术
(2)读写MAT文件 ① 向MAT文件中写入一个矩阵。 matPutVariable(mfp,name,mp) matPutArrayAsGlobal(mfp,mp) ② 获取MAT文件中的变量列表。 matGetDir(mfp,num) ③ 从MAT文件中读取一个矩阵。 matGetVariable(mfp,name) (3)关闭MAT文件。 matClose(mfp)
为了在Word环境下调用MATLAB的计算功能,需 要调用MATLAB的Notebook软件工具,它为Word 提供M-Book.dot模板。利用该模板创建的Word文 档通常称为M-Book文档。 1.Notebook的安装与启动 >> notebook -setup
第13章 MATLAB外部程序接口技术
第13章 MATLAB外部程序接口技术
(2)fclose函数 fclose函数用于关闭已打开的文件,其调用格式为: status=fclose(fid)
第13章 MATLAB外部程序接口技术
2.文件的读写 (1)fscanf函数 fscanf 函数用于读取文本文件的内容,并按指定 格式存入矩阵,其调用格式为:
第13章 MATLAB外部程序接口技术
4.计算区 计算区(calc zone)是一个由普通Word文本、输 入单元和输出单元组成的连续区,用于描述某个 具体的作业或问题。在计算区里,用户可以根据 描述问题的需要,安排段落、标题、分栏,而不 受计算区外的有关格式的约束。 定义计算区的方法
第13章 MATLAB外部程序接口技术
第13章 MATLAB外部程序接口技术
4.mx函数
在C程序中,使用MATLAB数据时还用到MATLAB 提供的接口函数中的mx函数,以完成对mxArray对 象的操作。MATLAB的矩阵运算是以mxArray结构 体(C++中是mwArray类)为核心构建的。
C 语言 mx 函数 char *mxArrayToString(const mxArray *array_ptr); mxArray *mxCreateDoubleMatrix(int m,int n, mxComplexity ComplexFlag); mxArray *mxCreateString(const char *str) void mxDestroyArray(mxArray *array_ptr); int mxGetM(const mxArray *array_ptr); int mxGetN(const mxArray *array_ptr); void mxSetM(mxArray *array_ptr,int m); void mxSetN(mxArray *array_ptr,int m); double *mxGetPr(const mxArray *array_ptr); double *mxGetPi(const mxArray *array_ptr); void mxSetPr(mxArray *array_ptr,double *pr); void mxSetPi(mxArray *array_ptr,double *pr); void *mxCalloc(size_t n,size_t size);
第13章 MATLAB外部程序接口技术
3.数据文件定位
(1)fseek函数 该函数用于定位文件位置指针,其调用格式为:
status=fseek(fid,offset,origin)例如:源自fseek(fid,0,-1)
%指针指向文件头
fseek(fid,-5,'eof') 字节
%指针指向文件尾前第5个
2.Notebook菜单项
M-Book模板定义了Word与MATLAB进行通信的 宏指令、文档样式和工具栏。