MATLAB教程.pdf

所需积分/C币:43 2013-11-12 13:31:38 15.25MB PDF
1
收藏 收藏
举报

MATLAB教程,学习matlab的一些基本操作和函数,以及扩展matlab导出函数在c++中的使用。
Cba°deC0N 第章 MATLAB是什么 下载 (c) MATLAB也能绘制一条参数曲线,例如 os t- sin 3t y= sint cos t-coS 3t x-y平面图如图1-3所示。 图1-3一个参数曲线图 ■例1.2函数分析 MATLAB命令fzer和fmin可以用于寻找一个函数的零点和最小值。 函数xe-e-sinx3可以用名叫func的用户自定义函数(见2.9节)表示,并存入一个名叫 func. m的M文件中。这个文件由下列行组成 function y func(x) x.*exp(x.^2)-exp(x.-2)-Bin(x.^3); 如果这个M文件被存放在当前的工作目录中,或在一个称为 matlab的子目录中,函数func 就可以像预定义的 MAtlaB函数一样调用。例如,调用 XIszero=func(0),给出的答案是 XI zEro 用这样定义的函数, MATLAB提供了一个命令来寻找方程xe-e2-sinx=0的零点。命令 xsO1v= fzero(“func’,3)给出 SOLv 194 在本例中,命令中的第2个自变量用的是3,是开始计算的一个初始近似值。 如果在-1≤x≤1.5区间内绘制这个函数,则正确答案如图1-4所示。 图1-4在-1≤x≤1.5区间内绘制函数xe-e-sinx的图形 Chinapub.com MATLAB5手册 下载 当x在0.5和1之间时,这个函数看起来有一个极小值,为正确找出这个极小值,用命令 mpoint=fmin(func’,0.5,1)其结果为: mpoint 0.8954 用于检査 MATLAB中用户自定义函数的命令可参见第10章和第11章。 ■例1.3线性系统与特征值 (a) MATLAB可以用一个简单的命令行求解线性系统,系数矩阵A和右侧b定义如下 3.6 A 24 2.1 这对应于线性系统Ax=b,如下所示: 3x1+x2-x3=3.6 x1+2x2+4x3=2.1 x1+4x2+5x3=-14 这可由如下命令求解 x=Ab 其结果为: 1.4818 -0.4606 0.3848 (b)还有许多矩阵控制命令。例如,例(a)中矩阵A的特征值很容易地可以由下列命令得到 EIgenvEctors, EigenValues]= eig(A) 其给出 EigenVectors 0.9482-0.3129 0.0553 0.28870.7756 0.5613 0.1328-0.54820.8258 Eigenvalues 4445 0 1.2305 7.7860 矩阵 Eigen Vectors的列是Δ的特征向量, Eigen Values中对角线元素是特征值。由于矩阵A 是对称的,因此,所有的特征值都是实数,三个特征向量是相互正交的。 MATLAB中的基本概念是矩阵。基本的矩阵命令在第3章描述,更多的命令将在第4、7、 8、9章中描述。 例1.4曲线拟合与插值 (a)如果有两个向量x和y表示的x-y平面上的一组点,那么,可以对它们进行插值点或者拟 合一条曲线。令 X=(11.534566.578) 第章 MATLAB是什么 5 下载 y=(1.211.72.52232.533.1) 对应x-y平面上的9个点。首先,展示以最小二乘法拟合数据的线性函数,这个可以通过 MATLAB中的三个简单的命令来实现 pl=polyfit(x, y, 1 号p1=响量等于一次多项式的系数。 linc=polyval (pl, x) 号1inc=狗量等于x点上多项式p1的值。 plot(x, linc,x, 号绘制多项式和由‘x标记的数据。 结果见图1-5(左图) 能以最小二乘法对一组点拟合高次多项式。对上面的命令行进行一点小改动就可以得到7 次多项式 p7=polyfit(x, 号p7=狗量等于7次多项式的系数 xX=1:0.25:8 号xx所有想要进行多项式计算的点 pole=polyval(p7, xx 号po1c=狗量等于点xx上多项式p7的值 plot=(xx, plc, x,y 绘制多项式和由′x′标记的数据。 其结果如图1-5(右图)所示。 图1-5x-y平面上对一组具有9个点的数据拟合的1次和7次多项式 (b) MATLAB提供了二维和三维的内插函数。给定一组点(x,y)和一些内插点 X MATLAB 能返回通过对这些数据内插的插入点的值,这可以有不同的方法实现。作为一个例子,将使 用(a)中的一组点来给出在下列点中插入的值 线性插值 三次样条插值 图1-6 piecewise线性函数插值(左)和三次样条插值(右) 6 Chinapul.com MATLAB5手册 下载 x=(11.11.21.3….7.98 在图1-6中,分别展示了分段线性插值和三次样条插值。x′标记表示原始数据,点线是 中间点的被插函数。 有关插值和曲线拟合的详细信息可参见第10章 ■例1.5统计 MATLAB包含了统计命令。例如,很容易地求得实验数据的平均值和中位值以及绘制统 计频数直方图或直方图。 图1-7显示了某小镇上每个人的年龄。上图是统计频数直方图,显示了每个年龄的人数。 例如,看到两个年龄最大的人是92岁。统计频数矩形图也表示了小镇上没有人是1岁或12岁 7岁的儿童7人。 也能看出32岁以下的人与32岁以上的人一样多,因为这是一个中间年龄。此外,平均年 龄是35岁。这些也都在图中标出。 另外,下图展出了小镇上居民的年龄。例如,如果知道要列出的是第1]人,那么也就知 道这个人是一个小孩。因为第11个直方块接触x轴。这种绘图称为阶梯图,即没有内部线的直 方图。统计命令在第6章中描述。 小镇居民的统计频数矩形图 中间值 平均年龄 8 4 imi‖mlh皿皿 10 小镇上每个人的年龄 0 40 0 020406080100120140160180200 小镇上的200人 图1-7来自小镇数据的一个统计频数矩形图 ■例1.6傅立叶变换与信号分析 MATLAB能利用快速傅立叶变换FFT计算离散傅立叶变换,这用于信号分析和解微分方程。 为了证明 MATLAB的傅立叶变换,用0和1之间的随机数干扰5sin(x)+2sin(5x)函数 x=1 Inspace(0,*多,6 signal=5*sin(x)+2*sin(5*x)+randn(x)i 第章 MATLAB是什么 7 下载 干扰信号和原始信号如图1-8(上)所示。 然后,变换这个信号,并且删除变换后信号中的所有高频,即系数向量中心部分设为零。 transf=fft(signal)i filttransf(1: 9)=transf(1: 9) filttransf(56: 64)=transf(56: 64) 傅立叶变换的实际部分如图1-8(下)所示。图1-9(上)中删除了高频傅立叶变换,仅低频向 量通过逆傅立叶变换而变换: filtsig=ifft(filttransf)i 干扰信号和原始信号 删除高频 干扰信号的傅立叶变换 过滤信号和原始信号 图1-8千扰信号和它的傅立叶变换 图1-9过滤傅立叶变换 这个过滤的信号与原始信号一起在图1-9(下)中展示。这个过滤的信号如期望一样是光滑 的。因为这种干扰也影响部分低频信号,所以它与原始信号不等 在10.5节中,作为 MATLAB的一部分描述了傅立叶变换,更详细的有关信号处理工具箱 的信息参见附录C ■例1.7常微分方程 MATLAB可以用数字求解常微分方程。作为一个实例,展示在一个轨道上一只猫追赶 只机器玩具老鼠。猫和老鼠的位置分别用(x(t),y()和(Y(t),Y(t)表示。猫的速度向量是和猫与 老鼠之间的差向量对应的。猫从(50,40)开始,这就给出了如下的微分方程系统: dx dt (X(t)-x(t) y a (Y(t)+y(t)) x(0)=40 y(O)=50 式中w是老鼠的速度,a是猫和老鼠在l时刻相距的距离,由下式给出 a(1)=x(1)-x)2+(Y()-y() 这个系统的解如图1-10所示,从图中可以看到由于老鼠跑得太快,猫并没有成功地抓到老鼠。 Chinapub.com MATLAB5手册 下载 猫和老鼠 猫 老鼠 图1-10猫捉机器玩具老鼠。小圆是老鼠的终点,十字是猫的终点 在11.2节中描述了如何使用 MATLAB求解一般的常微分方程问题。 ■例1.8偏微分方程 在 MATLAB中有许多用于不同应用领域的工具箱。这里,作为一个例子给出PDE工具箱, 这个工具箱能通过使用有限元方法( the finite- Clement method)解椭圆方程、抛物线方程和双 曲线方程。区域要分成大量的三角形子区域,对每个三角形,其解由一个简单函数估计。所 用的三角形越多,其偏差就越小。 求解这个区域里的椭圆问题-Au=sin(2πy+π2)cos(2πx+π2),如图1-11所示。 拉普拉斯算子A是+,边界条件=0,也可由PDE工具箱所做的三角形子区域给出。 这个问题的解可以用可视化等高线以二维绘制,如图1-12所示。 PDE 解 0050N5 图1-11PDE工具箱采用FEM的三角形子区域 图1-12PDE工具箱计算的等高线解的图示 ■例1.9 MATLAB中的编程 MATLAB是可编程的。命令序列可以在文本编辑器上写入,然后可以调用 MATLAB命令 窗口上的用户定义函数或程序。文件的名字必须要有扩展名.m,这个文件就称为M文件。这 些M文件可以用相同的方法象标准 MATLAB函数一样使用 (a)阶乘n!=1×2×3×…×n可以用不同的方法计算。这里,展示一个递归的用户定义函数 Chinapub.com 第章 MATLAB是什么 下载 function p =factorial(nn) %计算n的阶乘。 if nn == 0 p else p nn*factorial(nn-1): end 这个M文件名叫 factorial. m,对这个函数的调用如下所示 fourfactorial=factorial(4) 其结果为: fourfactorial 24 (b)在 MATLAB中可以使用面向对象的程序设计。有一个类 world,用来模拟一个小世界 内的生与死。对于一个要在这个世界出生的个人来说,他需要一些邻居,但太多的邻居会构 成生存危机。类 world的命令是在目录@word中的文件 world. m中。 Function w=world(size, density, nrcreate, nrsurvive) 号 WORLD生成一个生命世界。 号这是命令方式 号Size给出这个世界的边,它是方的。 号 Dens it应该是在0与1之间,定义了实与空的近似比率 recreat.个需要生长的空单元的最近邻居的号码。 survive个需要生存和长大的满单元的最近邻居的号码。 colormap ('gray') W Size Size: w. nrCreate nrCreate w. nrSurvive nrSurvive w Map round((-05+Density )+rand(Size, Size)) w. Nexty zeros(Size, Size) W=c1ass(W,' world’); 属于类的这种方法在目录@ world中定义 但不在这里说明。现在,人们可以通过下列命令 产生一个对象w W=wor1d(20,0.6,[245],[367]); 现在重复 w=year(w) 与人类所经历的10年一样,反复10次,得到 图1-13。 关于 MATLAB中的有关编程信息可参见第2章。 图1-1310年后世界w上的人口 ■例1.10图形用户界面 MATLAB提供了一个设计易于使用的程序的机会。程序能够在一个控制图上由按钮、弹 出菜单、可编辑文本等控制,这部分在14.3节中描述。在14.4节中,演示了一个由瑞典科学家 10 Chinapul.com MATLAB5手册 下载 设计的图形用户界面的实例。这个程序用于解决非等距网格的一个模型方程。 亠日 0的 心 suie owned 品品 □曰 图1-14带图形用户界面应用的一个 MATLAB程序 1.3 MATLAB帮助 本书打算展示 MATLAB中可用的命令,并解释如何使用 MATLAB。对于读者,多数时候 这已足够,但对想学习更多内容的读者来说,在 MATLAB中可以使用帮助。在系统提示符下, 键入help命令, MATLAB给出这个命令的解释。 在 MATLAB5中也包含了一个强有力的HTML格式的帮助数据库。这使得寻找一个命令更 容易,依参考而得到帮助。当给出 helpdesk命令时,一个浏览器如 Netscape Navigator或 Microsoft Internet Explorer就运行,即载入一个索引页 如果这还不能满足,可向 Math Works公司订购 MATLAB的完整手册,具体方法参见前言。

...展开详情
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
MATLAB教程.pdf 43积分/C币 立即下载
1/0