MATLABAPI详解
- 格式:doc
- 大小:448.00 KB
- 文档页数:20
MATLAB常用函数使用说明1. plot函数:用于绘制二维图形。
可以绘制直线、曲线、散点图等。
示例代码如下:```matlabx = 0:pi/100:2*pi;y = sin(x);plot(x,y)```2. subplot函数:用于在同一图中绘制多个子图。
可以按照网格状排列或自定义排列子图。
示例代码如下:```matlabsubplot(2,1,1);plot(x,y);title('Sin(x)');subplot(2,1,2);plot(x,cos(x));title('Cos(x)');```3. surf函数:用于绘制三维曲面图。
可以绘制正弦曲面、高斯曲面等。
示例代码如下:```matlabx=-2:0.1:2;y=-2:0.1:2;[X,Y] = meshgrid(x,y);Z=X.^2+Y.^2;surf(X,Y,Z);```4. imread函数:用于读取图像文件。
可以读取常见的图像格式,如JPEG、PNG等。
示例代码如下:```matlabimg = imread('image.jpg');imshow(img);```5. imwrite函数:用于写入图像文件。
可以将图像保存为指定格式的文件。
示例代码如下:```matlabimg = imread('image.jpg');imwrite(img,'output.png');6. fft函数:用于计算傅里叶变换。
可以用于信号频谱分析、滤波器设计等。
示例代码如下:```matlabx = sin(2*pi*10*t) + sin(2*pi*20*t);y = abs(fft(x));plot(y);```7. filter函数:用于滤波器设计与信号滤波。
可以设计低通、高通、带通滤波器等。
示例代码如下:```matlabb = fir1(31,0.5);y = filter(b,1,x);plot(y);```8. eig函数:用于计算矩阵的特征值和特征向量。
MATLAB的函数调用1. 简介MATLAB(Matrix Laboratory)是一种用于算法开发、数据可视化和数值计算的高级技术计算语言和环境。
它提供了许多内置函数,可以方便地完成各种数学、统计和工程计算任务。
在MATLAB中,函数调用是实现特定功能的关键步骤之一。
本文将详细介绍MATLAB的函数调用以及它们的用法和特点。
2. 函数调用的基本语法在MATLAB中,函数调用通常遵循以下基本语法:output = function_name(input1, input2, ...)•output是函数调用的结果,也称为函数的返回值。
可以将其保存在一个变量中以供后续使用。
有些函数可能没有返回值,此时可以省略output。
•function_name是要调用的函数的名称。
•input1, input2, ...是传递给函数的输入参数。
输入参数的数量和类型取决于每个特定函数的要求。
3. 内置函数的调用MATLAB提供了许多内置函数,可以执行各种计算任务。
下面是一些常用的内置函数及其用法示例:3.1. sqrt()函数sqrt()函数用于计算给定数的平方根。
result = sqrt(16)结果:result = 43.2. sin()函数sin()函数用于计算给定角度的正弦值。
result = sin(pi/2)结果:result = 13.3. sum()函数sum()函数用于计算给定向量或矩阵的元素之和。
A = [1, 2, 3; 4, 5, 6];result = sum(A, 'all')结果:result = 213.4. plot()函数plot()函数用于绘制二维线条图。
x = 0:0.1:2*pi;y = sin(x);plot(x, y)结果:绘制出一个正弦曲线图。
4. 自定义函数的调用除了内置函数,MATLAB还允许用户自定义函数来满足特定的计算需求。
用户可以使用MATLAB语言来编写自己的函数,并在需要时进行调用。
MATLAB、API详解【例12.1.4-1】有一个绘圆的M脚本文件circle.m如下。
希望获得一个MEX绘圆程序。
(1)原始的绘圆脚本文件[circle.m]clf;r=2;t=0:pi/100:2*pi;x=r*exp(i*t);plot(x,'r*');axis('square')(2)对这脚本文件直接编译将因错误而失败mcc -x circle??? Error: File "circle" is a Script M-file and cannot be compiled with the current Compiler.Error in ==> H:\MATLAB53\toolbox\compiler\mcc.dll(3)把脚本文件改写成函数文件。
[circle_f.m]:function circle_f(r)clf;t=0:pi/100:2*pi;x=r*exp(i*t);plot(x,'r*');axis('square')(4)再对circle_f.m进行编译,将顺利通过。
mcc -x circle_f %mcc是编译指令,详见12.4节。
(5)运行生成的MEX文件circle_f.dllcircle_f(0.5) %调用circle_f绘制一半径为0.5的圆which circle_f %查询所调用的circle_f的路径全称。
图 12.2.1-1 【Select MATLAB Componets】对话窗的选项局部图图 12.2.2.1-1 为产生MEX文件所产生的配置屏1图 12.2.2.1-2 为产生MEX文件所产生的配置屏212.1.1.1配置正确性的验证(1)mex应用程序的验证cd d:\mywork %把用户目录指定为当前目录mex my_yprime.c %由my_yprime.c文件生成my_yprime.dll文件my_yprime(1,1:4) %运行my_yprime.dll文件which my_yprime %获得my_yprime.dll文件的位置信息ans =2.0000 8.9685 4.0000 -1.0947d:\mywork\my_yprime.dll(2)在MATLAB命令窗中验证mcc应用程序mcc -x my_yprime_m%<1> my_yprime_m(1,1:4)which my_yprime_mans =2.00008.96854.0000-1.0947d:\mywork\my_yprime_m.dll(3)在 DOS提示符后验证mex、mcc应用程序图 12.2.2.2-1 在DOS状态下验证编译指令12.1.2为产生独立外部应用程序进行预配置12.1.2.1对MATLAB编译器mbuild应用程序的设置(2.0版)图 12.2.3.1-1 为产生独立外部应用程序所产生的配置屏1图 12.2.3.1-2 为产生独立外部应用程序所产生的配置屏212.1.2.2对MATLAB编译器mbuild应用程序的设置(1.2版)12.1.2.3配置正确性的验证(1)mbuild应用程序的验证cd d:\mywork %把用户目录指定为当前目录mbuild my_ex1.c %在d:\mywork下生成my_ex1.exe文件图 12.2.3.2-1 在DOS窗口运行验证程序my_ex1.exe所得的结果(2)mcc应用程序的验证mcc -p my_hello.m %<1>图12.2.3.2-2 在DOS窗口运行验证程序my_hello.exe所得的结果(3)在DOS状态下验证mbuild、mcc工作正确性图 12.2.3.2-3 在DOS状态验证编译指令12.2M ATLAB编译器使用入门12.2.1由M文件创建C MEX文件的入门算例【例12.3.1-1】先编写M文件,然后生成相应的MEX文件。
Matlab主要函数使用方法Matlab是一种强大的数值计算和科学计算软件,它提供了许多函数和工具,可以帮助用户进行各种数学和科学计算。
在本文中,我将介绍Matlab中一些常用的函数和它们的使用方法。
1. plot函数:用于绘制二维图形。
语法为plot(x, y),其中x和y分别是要绘制的数据的向量。
可以使用不同的线条样式和颜色来自定义图形的外观。
2. imshow函数:用于显示图像。
语法为imshow(A),其中A是要显示的图像矩阵。
可以使用colormap函数来自定义颜色映射。
3. imread函数:用于读取图像文件。
语法为A = imread(filename),其中filename是要读取的图像文件的名称。
可以使用imwrite函数将图像保存为文件。
4. hist函数:用于绘制直方图。
语法为hist(x),其中x是要绘制直方图的数据向量。
可以使用不同的参数来自定义直方图的外观。
5. sum函数:用于计算向量或矩阵的元素之和。
语法为s = sum(x),其中x是要求和的向量或矩阵。
可以指定维度来求解其中一维度上的和。
6. mean函数:用于计算向量或矩阵的平均值。
语法为m = mean(x),其中x是要计算平均值的向量或矩阵。
可以指定维度来求解其中一维度上的平均值。
7. max函数:用于找到向量或矩阵中的最大值。
语法为m = max(x),其中x是要找到最大值的向量或矩阵。
可以指定维度来求解其中一维度上的最大值。
8. min函数:用于找到向量或矩阵中的最小值。
语法为m = min(x),其中x是要找到最小值的向量或矩阵。
可以指定维度来求解其中一维度上的最小值。
9. rand函数:用于生成随机数。
语法为r = rand(n),其中n是要生成的随机数的个数。
可以使用不同的参数来指定随机数的范围和分布。
10. linspace函数:用于生成等间距的向量。
语法为x =linspace(a, b, n),其中a和b是向量的起始和结束值,n是向量的长度。
第十二章应用程序接口API前面章节主要叙述MATLAB自身的各种功能和使用方法。
作为优秀软件,MATLAB 不仅自身功能强大、环境友善、能十分有效地处理各种科学和工程问题,而且具有极好的开放性。
这开放性表现在两方面:一,MATLAB适应各科学、专业研究的需要,提供了各种专业性的工具包;二,MATLAB为实现与外部应用程序的“无缝”结合,提供了专门的应用程序接口API。
遵循本书“淡化专业,面向通用”的宗旨,本章将集中阐述MATLAB 的应用程序接口。
本章分五节,各节内容简述如下。
第12.1节集中介绍:如何编写C MEX源码程序,也就是如何为现有的C程序编写接口程序,使之成为MATLAB函数文件;运用这种技术,读者可以把积累的优秀C程序改造成可在MATLAB中方便调用的指令。
第12.2节用于演示:如何编写产生MAT数据文件的C源码程序。
读者通过算例入门,就不难借助MAT文件实现MATLAB与外部应用程序的数据交换。
第12.3节围绕MATLAB引擎技术展开。
借助这种技术,前台可以是各种外部应用程序编写的界面,而后台计算则可完全交由MATLAB进行。
第12.4节用三个算例来说明如何应用ActiveX实现MATLAB与外部应用程序的通信。
在第一个算例中,MATLAB用作为客户,服务器是Excel。
在后两个算例中,服务器是MATLAB,而客户是PowerPoint。
由此产生的PPT文件,可以在放映过程中,实时地进行MATLAB调用。
第12.5节的内容是:如何借助DDE技术在MATLAB与其他外部程序间进行通信。
该节的一个算例演示:VB制作的界面如何借助DDE建立的对话通道调用服务器MATLAB 进行计算和显示结果图形。
而另一个算例则演示:MATLAB如何以客户身份与服务器Excel建立DDE“热连接”,使MATLAB图形实时地跟随电子表格数据的改变而变化。
值得指出:MATLAB6.0, 6.1版用于API的(MEX、MAT、及引擎)库函数许多已经被废止。
Matlab中mcc, mbuild和mex命令详解MATLAB编译及接口Matlab的mcc命令将m文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编译器)和exe文件,并在特定条件下可以自动调用mbuild或者mex。
Mex命令将入口函数为mexfunction()的C/C++文件编译成MEX(DLL)文件(需要C/C++编译器)。
Mbuild命令将入口函数为main()的C/C++文件生成可独立运行的C应用程序(需要C/C++编译器)。
对于64位的Windows平台,MATLAB没有现成的C编译器。
需要免费下载Microsoft Windows SDK编译器。
Microsoft Windows SDK for Windows 7 and .NET Framework 4下载地址:(需要联网安装):microsoft/en-us/download/details.aspx?id=8279安装前一定要卸载Microsoft Visual C++ 2010 x86 Redistributable - 10.0.30319以上版本的C++运行库,装完SDK7.1后需要安装VC-Compiler-KB2519277补丁::microsoft/zh-cn/download/details.aspx?id=4422 在使用mcc, mbuild和mex命令之前,首先要配置MATLAB使用Windows SDK进行C/C++语言编译,配置命令如下:mex -setup17mbuild -setup配置命令运行结果:>> mex -setupMEX 配置为使用'Microsoft Visual C++ 2012 (C)' 以进行C 语言编译。
警告: MATLAB C 和Fortran API 已更改,现可支持包含2^32-1 个以上元素的MATLAB 变量。
不久以后,您需要更新代码以利用新的API。
MATLAB、API详解【例12.1.4-1】有一个绘圆的M脚本文件circle.m如下。
希望获得一个MEX绘圆程序。
(1)原始的绘圆脚本文件[circle.m]clf;r=2;t=0:pi/100:2*pi;x=r*exp(i*t);plot(x,'r*');axis('square')(2)对这脚本文件直接编译将因错误而失败mcc -x circle??? Error: File "circle" is a Script M-file and cannot be compiled with the current Compiler.Error in ==> H:\MATLAB53\toolbox\compiler\mcc.dll(3)把脚本文件改写成函数文件。
[circle_f.m]:function circle_f(r)clf;t=0:pi/100:2*pi;x=r*exp(i*t);plot(x,'r*');axis('square')(4)再对circle_f.m进行编译,将顺利通过。
mcc -x circle_f %mcc是编译指令,详见12.4节。
(5)运行生成的MEX文件circle_f.dllcircle_f(0.5) %调用circle_f绘制一半径为0.5的圆which circle_f %查询所调用的circle_f的路径全称。
图 12.2.1-1 【Select MATLAB Componets】对话窗的选项局部图图 12.2.2.1-1 为产生MEX文件所产生的配置屏1图 12.2.2.1-2 为产生MEX文件所产生的配置屏212.1.1.1配置正确性的验证(1)mex应用程序的验证cd d:\mywork %把用户目录指定为当前目录mex my_yprime.c %由my_yprime.c文件生成my_yprime.dll文件my_yprime(1,1:4) %运行my_yprime.dll文件which my_yprime %获得my_yprime.dll文件的位置信息ans =2.0000 8.9685 4.0000 -1.0947d:\mywork\my_yprime.dll(2)在MATLAB命令窗中验证mcc应用程序mcc -x my_yprime_m%<1> my_yprime_m(1,1:4)which my_yprime_mans =2.00008.96854.0000-1.0947d:\mywork\my_yprime_m.dll(3)在 DOS提示符后验证mex、mcc应用程序图 12.2.2.2-1 在DOS状态下验证编译指令12.1.2为产生独立外部应用程序进行预配置12.1.2.1对MATLAB编译器mbuild应用程序的设置(2.0版)图 12.2.3.1-1 为产生独立外部应用程序所产生的配置屏1图 12.2.3.1-2 为产生独立外部应用程序所产生的配置屏212.1.2.2对MATLAB编译器mbuild应用程序的设置(1.2版)12.1.2.3配置正确性的验证(1)mbuild应用程序的验证cd d:\mywork %把用户目录指定为当前目录mbuild my_ex1.c %在d:\mywork下生成my_ex1.exe文件图 12.2.3.2-1 在DOS窗口运行验证程序my_ex1.exe所得的结果(2)mcc应用程序的验证mcc -p my_hello.m %<1>图12.2.3.2-2 在DOS窗口运行验证程序my_hello.exe所得的结果(3)在DOS状态下验证mbuild、mcc工作正确性图 12.2.3.2-3 在DOS状态验证编译指令12.2M ATLAB编译器使用入门12.2.1由M文件创建C MEX文件的入门算例【例12.3.1-1】先编写M文件,然后生成相应的MEX文件。
该文件用以判断方阵是否奇异。
cd d:\mywork(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下。
(3)在MATLAB命令窗中,运行以下指令对exm1.m进行编译。
mcc -x exm1 %编译m文件。
(4)调用MEX文件exm1.dll 进行计算A=[1,0,1;2,1,0;4,1,4]exm1(A) %调用exm1来判断矩阵A是否奇异。
which exm1 %查询所调用的exm1的路径和全称。
A =1 0 12 1 04 1 4This matrix is nonsigulard:\mywork\exm1.dll12.2.2由M文件创建外部应用程序的入门算例【例12.3.2-1】建立一个脱离MATLAB环境,可独立运行的外部程序。
该程序的功能是:对于给定矩阵A,如果存在S使得S-1AS=Λ,则要求出一个S,否则给出信息说明所给的矩阵A不能对角化。
(1)编写两个M函数文件:exm2.m和exm2_f.m 。
(第一个文件是主文件。
)[exm2.m]function exm2A=[4,0,0;0,3,1;0,1,3];S=exm2_f(A)[exm2_f.m]function S=exm2_f(A)[m,n]=size(A);if m~=nerror('输入矩阵应是方阵!');end;e=eig(A);%检查输入矩阵的特征值是否各异same=0;for i=1:m-1for j=(i+1):mif e(j)==e(i)same=1;endendend% A可以对角化的条件是A具有互异特征值或者A为埃尔米特矩阵。
if any(any((A'-A)))&(same==1)error('矩阵无法对角化!');end[v,d]=eig(A);S=v;(2)把这两个函数文件存放于用户自己的目录d:\mywork,并在MATLAB中运行检验。
exm2S =1.0000 0 00 0.7071 0.70710 0.7071 -0.7071(3)生成独立的外部可执行程序。
在MATLAB指令窗中,运行如下指令mcc -m exm2 exm2_f(4)打开DOS窗口,在d:\mywork目录下,运行exm2.exe,得如图12.3.2-1的结果。
图12.3.2-1 在DOS窗口运行生成程序exm2.exe所得的结果12.3编译指令mcc简介12.3.1mcc的基本调用格式12.3.2mcc的选项标志12.3.2.1编译器2.0选项简介12.3.2.2在命令行中指定选项标志【例12.4.2.2-1】假设当前目录上存在一个文件exm3.m ,现要求利用M编译器将它转换为C++语言的源码文件,并要求将原M文件中那注释区的内容作为所得C++源码文件的注释。
mcc -t -L Cpp -A annotation:comments exm3 %得到exm3.cpp和exm3.hpp12.3.2.3设置缺省选项【例12.4.2.3-1】假设已在d:\mywork下创建了文本文件mccstartup (请注意:该文件不可带扩展名),该文件的内容包括若干编译指令的选项。
现要求利用该文件,从exm3.m出发得到C++语言的源文件。
cd d:\mywork %将d:\mywork设为当前工作目录type mccstartup %打印文本文件mccstartup的内容-t -L C -A annotation:none!copy mccstartup h:\y9857\temp %将mccstartup转移到临时目录下!copy exm3.m h:\y9857\temp %将待编译M源码转移到临时目录下!del mccstartup , %删除mccstartup!del exm3* %删除原有的编译后文件dir mccstartup %当前目录下是否含有mccstartupdir h:\matlab53\bin\mccstartup %<matlab>\bin下是否含该文件dir exm3* %当前目录下是否含有exm3*1 file(s) copied1 file(s) copiedmccstartup not found.h:\matlab53\bin\mccstartup not found.exm3* not found.!copy h:\y9857\temp\exm3.m d:\myworkmcc -L Cpp exm3 %<1>1 file(s) copied??? Error: The options specified will not generate any output files. Please use one of the following options to generate an executable output file:-x (generates a MEX-file executable using C)-m (generates a stand-alone executable using C)-p (generates a stand-alone executable using C++)-S (generates a Simulink MEX S-function using C)Or type mcc -? for more usage information.Error in ==> H:\MATLAB53\toolbox\compiler\mcc.dll!copy h:\y9857\temp\mccstartup d:\mywork %将mccstartup拷贝到当前目录mcc -L Cpp exm3 %<2>dir exm3* %<3>!del mccstartup1 file(s) copiedexm3.cpp exm3.hpp exm3.m12.3.2.4编译器1.2选项简介【例12.4.2.4-1】要求利用1.2版编辑器对文件exm4.m进行操作,目标是获得C MEX文件和C语言的独立可执行文件。