实用MATLAB变量.doc

上传人:汽*** 文档编号:557269893 上传时间:2022-10-30 格式:DOC 页数:13 大小:122.01KB
返回 下载 相关 举报
实用MATLAB变量.doc_第1页
第1页 / 共13页
实用MATLAB变量.doc_第2页
第2页 / 共13页
实用MATLAB变量.doc_第3页
第3页 / 共13页
实用MATLAB变量.doc_第4页
第4页 / 共13页
实用MATLAB变量.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《实用MATLAB变量.doc》由会员分享,可在线阅读,更多相关《实用MATLAB变量.doc(13页珍藏版)》请在金锄头文库上搜索。

1、matlab常用到的永久变量。 ans:计算结果的默认变量名。 i j:基本虚数单位。 eps:系统的浮点(F10a9Bg个oht): inf: 无限大,例1/0 nan NaN:非数值(N航a nmnb谢) pi:圆周率n(n31415926)。 realmax:系统所能表示的最大数值。 realmin: 系统所能表示的最小数值, nargin: 函数的输入参数个数: nargout:函数的输出多数个数 matlab的所有运算都定义在复数城上。对于方根问题运算只返回处于第一象限的解。 matlab分别用左斜和右来表示“左除和“右除”运算。对于标量运算而言,这两者的作用没有区别:但对于矩阵运算

2、来说,二者将产生不同的结果。 多项式的表示方法和运算 p(x)=x3-3x-5 可以表示为p=1 0 3 5,求x5时的值用plotval(p,5) 也可以求向量:a=3 4 5,plotval(p,a) 函数roots求多项式的根roots(p) p=1 0 -3 5; r=roots(p) 由根重组多项式poly(根) q=poly(r) real(q) 有时会产生虚根,这时用real抽取实根即可 conv(a,b)函数多项式乘法(执行两个数组的卷积) a=1 2 3 4; b=1 4 9 16; c=conv(a,b) 多项式的加减法,低阶的多项式必须用首零填补,使其与高阶多项式有同样的

3、阶次 多项式除法q , r=deconv(c , b) 表示b/c q为商多项式,r为余数 多项式的导数polyder(f) f= 2 4 5 6 2 1; s=polyder(f) 多项式的曲线拟合 x=1 2 3 4 5; y=5.6 40 150 250 498.9; p=polyfit(x,y,n) 数据的n次多项式拟合poly:矩阵的特征多项式、根集对应的多项式 x2=1:0.1:5; n取1时,即为最小二乘法 y2=polyval(p,x2); 计算多项式的值(polyvalm计算矩阵多项式) plot(x,y,*,x2,y2);grid on 最小二乘法 x=1 2 3 4 5;

4、 y=5.6 40 150 250 498.9; plot(x,y,*),lsline 多项式插值(p158) YI=interp1(x,y,XI,method) 一维插值 (XI为插值点的自变量坐标向量,可以为数组或单个数。 method为选择插值算法的方法,包括: linear(线性插值) cubic(立方插值) spline(三次样条插值) nearst(最近临插值) 例如:人口预测 year=1900:10:1900; number=78 91 105 .每十年的人口数; x=1900:1:2000; y=interp1(year,number,x,spline); plot(year

5、,numeber,*,x,y);grid on 一维博里叶变换插值使用函数interpft实现,计算含有周期函数值的矢量的傅里叶变换 然后使用更多的点进行傅里叶变换的逆变换,函数的使用格式如下:y=interpft(x,n) 其中x是含有周期函数值的矢量,并为等距的点,n为返同等间距点的个数。 求解一元函数的最小值 y=fminbnd(humps,0.3,1) humps为一内置函数 求解多元函数的最小值 函数fminserch用于求多元函数的最小值。它可以指定一个开始的矢量,并非指定一个区间。此函数返回一个矢量为此多元函数局部最小函数值对应的自变量 纹理成图功能 由warp函数的纹理成图功能

6、实现平面图像在空间三维曲面上的显示。 将文件名为flowers.tif的图像分别投影到圆柱形和球星表面上 i=imread(flowers.tif); x,y,z=cylinder; subplot(1,2,1),warp(x,y,z,i); x,y,z=sphere(50); subplot(1,2,2),warp(x,y,z,i); warp(x,y,z,i); 求函数的零点 求函数humps在1,2区间上的零点fzero(humps,1,2); 也可以给一个初始值fzero(humps,0.9); 对于多项式可直接由roots求其根roots(4*x3+); 也可以用solve c=sy

7、m(c,real); x=sym(x,real); s=solve(x3-x+c) 函数定积分 q=quadl(humps,0,1) 求humps函数在0 1区间上的定积分,也可以用quad语句 二重积分首先计算内积分,然后借助内积分的中间结果再求出二重积分的值,类似于积分中的分步积分法。 Result=dblquad(integrnd,xin,xmax.,ymin,ymax) integrnd为被积函数的名称字符串 符号积分运算int(f) 最精确的是符号积分法 计算s=1201xydxdy syms x y 中间为空格,不能为逗号 s=int(int(xy,x,0,1),y,1,2) 引号

8、可省略 vpa(s) 显示s的值 内积分限为函数的二重积分 I=14y2(x2+y2)dxdy 符号法I=vpa(int(int(x2+y2,x,sqrt(y),2),y,1,4) 微分运算(diff) 微分是描述一个函数在一点处的斜率,是函数的微观性质、因此积分对函数的形状在小范围内的改变不敏感,而微分很敏感。个函数的小的变化,容易产生相邻点的斜率的大的改变。由干微分这个固有的困难所以尽可能避免数值微分特别是对实验获得的数据进行微分。在这种情况,最好用最小二乘曲线拟合这种数据,然后对所得到的多项式进行微分;或用另一种方法对点数据进行三次样条拟合,然后寻找样条微分,但是,有时微分运算是不能避免

9、的,在MATLAB中用函数diff汁算一个矢量或者矩阵的微分(也可以理解为差分)。 a=1 2 3 3 3 7 8 9; b=diff(a) 一次微分 bb=diff(a,2) 二次微分 实际上diff(a)=a(2)-a(1),a(3)-a(2),a(n)-a(n-1) 对于求矩阵的微分,即为求各列矢量的微分,从矢量的微分值可以判断矢量的单调性、是否等间距以及是否有重复的元素。 符号微分运算(diff) syms x t a f =cos(a*x) df =diff(f) 由findsym的规则,隐式的指定对x进行微分 dfa=diff(f,a) 指定对变量a进行微分 dfa=diff(f,

10、a,3) 三次微分 diff函数不仅作用在标量上,还可以在矩阵上,运算规则就是按矩阵的元素分别进行微分 syms a x A=cos(a*x),sin(a*x),-sin(a*x),cos(a*x); dA=diff(A) 微分方程dsolve 在matlab中,符号表达式中包含字母D用来表示微分运算,D2,D3分别对应第二,第三阶导数,D2y表示d2y/dt2 把t缺省了 y=dsolve(Dy=f(y) 单个方程,单个输出 u,v=dsolve(Du=f(u,v),Dv=g(u,v) 2个方程,2个输出 s=dsolve(Dx=f(x,y,z),Dy=g(x,y,z),Dz=k(x,y,z

11、) s.x s.y s.z 3个方程,架构数组 dsolve(Dx=-a*x) 结果:C1*exp(-a*t) 没给定初值,所以结果中含参变量 x=dsolve(Dx=-a*x,x(0)=1,s) 结果exp(-a*s) 给定了初值,独立变量设为s 计算多元函数的梯度 fx=gradient(f) f是一个矢量返回f的一维数值梯度,fx对应于x方向的微分。 x,y=meshgrid(-2:.2:2,-2:.2:2); z=x.*exp(-x.2-y.2); px,py=gradient(z,.2,.2); contour(z),hold on 画等值线 quiver(px,py) matlab

12、字符串运算 利用sym命令创建表达式 f=sym(cos(x)+sin(x)或syms x , f=cos(x)+sin(x) diff(f) 求其导数 (也可直接用命令f=diff(cos(x)+cos(y) 当字符表达式中含有多于一个的变量时,只有个变量是独立变量。如果不告诉matlab哪一个变量是独立变量,则可以通过findsym命令询问 利用findsym命令查询独立变量 f=sym(sin(a*x)+b) findsym(f,1) 给出独立变量(一个变量,如果为2则给出2个变量) findsym(f) 给出所有变量 符号表达式的化简和替换 collect函数collect(f,v)表

13、示将f表示为关于符号变量v的多项式形式,即关于v合并同类项,v缺省,则用findsym确定的缺省变量 syms x y f=x2*y+y*x-x2-2*x+1 collect(f) 得到(-1+y)*x2+(y-2)*x+1 collect(f,y) 得到(x+x2)*y+1-x2-2*x expand函数expand(f)将f展开,写成和的形式 syms x expand(x-1)3) 得到x3-3*x2+3*x-1 horner函数horner(f)将f写成镶嵌套形式 syms x horner(x3-6*x2) 得到(-6+x)*x2 factor函数factor(f)将f转换成低阶有理

14、多项式的乘积 syms x f=x3-6*x2+11*x-6 factor(f) 得到(x-1)*(x-2)*(x-3) simplify(f)函数综合化简 simple(f) 函数的最简形式 syms x f=2*sin(x2)+cos(3*x) simple(f) 如果不想看到中间过程,可z=simple(f) 有时使用两次simple命令可以得到最简式 如果想知道哪个简化命令得到最后结果,可以加一个参数how z,how=simple(f) 符号表达式的替换 subs(f,new,old) f=a*x2+b*x+c subs(f,t,x) 得到a*(t)2+b*(t)+c subs是一个符号函数,返回一个符号变量 subexpr函数有时matlab返回的符号表达式难以理解,用subexpr函数,可以将表达式中重复出现的子式用一个符号表示,从而简化表达形式 c=sym(c,real); x=sym(x,real); s=solve(x3-x+c) a=subexpr(s) 得到sigma = -108*c+12*(-12+81*c2)(1/2) a = 1/6*sigma(1/3)+2/sigma(1/3) -1/12*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号