《Matlab学习笔记(全).pdf》由会员分享,可在线阅读,更多相关《Matlab学习笔记(全).pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 Matlab 学习笔记 MATLAB与 科 学 计 算 王正盛 国防工业出版社 一.MATLAB 入门.错误!未定义书签。who、whos 和永久变量.错误!未定义书签。显示格式.错误!未定义书签。图形.错误!未定义书签。二.MATLAB 数值计算.错误!未定义书签。1.常用命令:.错误!未定义书签。2.矩阵的保存和获取.错误!未定义书签。3.矩阵的运算和数组的运算.错误!未定义书签。4.线性方程组.错误!未定义书签。5.多项式.错误!未定义书签。6.数值积分.错误!未定义书签。7.一般非线性方程组求解.错误!未定义书签。8.微分方程的数值求解.错误!未定义书签。三MATLAB 的符号计算.
2、错误!未定义书签。1.符号变量和符号表达式.错误!未定义书签。2.微积分运算.错误!未定义书签。3.解方程.错误!未定义书签。4.化简和代换.错误!未定义书签。的符号表达式命令.错误!未定义书签。四.MATLAB 的图形和可视化.错误!未定义书签。1.二维图形.错误!未定义书签。2 图形标记.错误!未定义书签。3.特殊坐标和图形.错误!未定义书签。4.其他命令.错误!未定义书签。5.填充命令.错误!未定义书签。6.三维图形.错误!未定义书签。7.符号绘图.错误!未定义书签。8.其他.错误!未定义书签。五.MATLAB 程序设计.错误!未定义书签。1.概述:.错误!未定义书签。2.命令文件.错误
3、!未定义书签。3.程序文件.错误!未定义书签。六.MATLAB 图形用户界面(GUI)设计.错误!未定义书签。七.基于 MATLAB 的大规模矩阵计算.错误!未定义书签。1.稀疏矩阵.错误!未定义书签。八.基于 MATLAB 的最优化问题求解.错误!未定义书签。1.线性规划问题.错误!未定义书签。2.非线性问题.错误!未定义书签。3.二次规划问题.错误!未定义书签。九.基于 MATLAB 的数据插值和拟合.错误!未定义书签。1.一维数据插值.错误!未定义书签。2.二维数据插值.错误!未定义书签。3.曲线拟合.错误!未定义书签。十.基于 MATLAB 的图像处理初步.错误!未定义书签。1.图像分
4、类.错误!未定义书签。2.图像的读取和显示.错误!未定义书签。一.MATLAB 入门 who、whos 和永久变量 who 变量名%检查内存变量。Whos%检查驻留变量的详细情况。MATLAB 自定义的永久变量:eps%计算机中的最小正数 inf%无穷大 pi%圆周率 NaN%不定量 flops%浮点运算次数 i,j%虚数单位 显示格式 MATLAB 中以短格式(5 个有效数字)显示计算结果,可以用 format 命令改变数字显示格式 1.变量的存储和调用 1)存储当前工作空间中的变量 Save%将所有的变量存入文件中 Save mydate%将所有变量存入指定文件 Save mydate x
5、 y z%将指定的变量存入指定的文件中 2)将数据文件的变量载入当前的工作空间 将 save 换作 load 即可 图形 1 二维图形绘制命令 Plot(x,y);2.三维图形绘制命令 Mesh(z);2.用户目录的建立 在命令窗口输入:cd c:mydir 二.MATLAB 数值计算 1.常用命令:Reshape 命令 X=1:1:6;%产生 6 个元素的行向量 Reshape(x,2,3);%利用 X 行向量产生一个 2*3 的向量 diag 命令:ar=rand(4,4)%产生一个 4*4 的 0-1 均匀随机向量 d=diag(ar)%用 ar 的主对角元形成向量 d D=diag(d
6、)%利用 d 构成对角矩阵 D Size:获取矩阵的行数和列数 2.矩阵的保存和获取 1)利用 m 文件 利用文件编辑器编辑矩阵 AM=1 2 3;4 5 6;7 8 9保存为在自己的目录下名的在 MATLAB 命令窗口中只要输入 matrix 就可以调用 AM 矩阵 2)通过 mat 文件 Mat 文件是 MATLAB 中保存数据的一种标准格式二进制文件,通过 save 和 load 执行,如前所述 3)利用外部数据文件装入到指定矩阵中 假如磁盘中已有名为 c:mydir的二进制数据文件,利用 load c:mydir命令可以在 MATLAB工作空间中产生一个名为 date 的矩阵 3.矩阵
7、的运算和数组的运算 矩阵运算是按矩阵的运算法则进行的;数组运算无论何种操作都是对元素逐个进行的,数组运算需要在运算符前加点号。4.线性方程组 1)采用求逆运算:x=inv(A)*b;2)采用左除运算:x=Ab;说明:只有在 A 是方阵时可以采用求逆运算;求逆运算没有左除运算好;一般都用左除运算吧 在解欠定方程时,解得结果是所有结果中范最小的一个 5.多项式 1.多项式的创建 1)多项式系数向量直接输入法 2)利用指令:p=poly(AR);AR 为多项式的根或者特征多项式 常用多项式的运算指令:R=roots(P)%求多项式的根 PA=polyval(p;S)%按数组运算规则计算多项式值。P
8、是多项式,S 为矩阵 PA=polyvalm(p;S)%按向量运算规则计算多项式值。r,p,k=residue(b,a)%部分分式展开。b,a 分别是分子,分母多项式的系数向量。R,p,k 分别是留数、极点、直项向量。P=polyfit(x,y,n)%用 n 阶多项式拟合 x,y 向量给定的数据。6.数值积分 S=quad(fname,j 积分下限,积分上限,tol,trace)%trace 为 1 用图形展示积分过程,精确度缺省时取 S=quad8(fname,j 积分下限,积分上限,精确度,trace)7.一般非线性方程组求解 1)单变量非线性方程求解 先建立方程文件调用 fzero 求解
9、 Z=fzero(fname,x0,tol,trace)%x0 为起始搜索点,一个函数可能有多个根,但结果只取离 x0 最近的根 2)求解非线性方程组 先建立方程组的 m 文件调用 fsolve 函数求解 X=fsolve(fname,x0)%x0 是对解的猜测值 function q=myxyz(p)x=p(1);y=p(2);z=p(3);q(1)=sin(x)+y2+log(z)-7;q(2)=3*x+2*y-z3+1;q(3)=x+y+z-5;调用 x=fsolve(myxyz,1 1 1)8.微分方程的数值求解 t,x=ode23(fnanme,to,tf,x0,tol,trace)
10、t,x=ode45(fnanme,to,tf,x0,tol,trace)先建立微分方程文件调用 ode23 或 ode45 函数。function yp=funt(t,y)yp=(y2-t-2)/4/(t+1);调用 t,y=ode23(funt,0,10,2)注:该指令是针对一阶微分方程设计的。因此对于高阶微分方程,必须演化成形如 x=f(x,t)的一阶微分方程。三MATLAB 的符号计算 1.符号变量和符号表达式 sym x%定义一个符号变量 findsym(g)%确认符号表达式中的符号变量 syms x,y,z%定义一组符号变量 注:事实上,sym 和 syms 在定义符号变量时除了个数
11、的差别外,还有定义的结果也不同,注意在 MATLAB 中体会。f=sym(1+sin(x)subs(f,old,new)%用新的符号变量代替旧的符号变量,可以是一个变量也可以是一个数组。2.微积分运算 1)微分 diff(f,t,n)%函数 f 对 t 求导,如果 t 缺省,则字符表上最接近 x 的符号变量求导;n 表示求导次数 2)积分 int(f,t,t0,tf)%函数 f 对 x 在 t0 到 tf 上求积分 3)求极限 limit(f,t,a,left 或者 right)%当 t 趋于 a 时,f 的极限,当 a 缺省时,a 为 0,left或者 right 表示左右极限。4)求级数和
12、 symsum(s,t,a,b)%t 从 a 到 b 时 s 的级数和 5)求泰勒级数 taylor(f,x,a)%函数 f 对符号变量 x 在 a 点附近的泰勒级数,a 缺省时为 0,详见 help。命令栏输入 taylortool 可以调用泰勒图形展开界面。3.解方程 1)代数方程 solve(f,t)%解代数方程 f=0 或者 solve(f(x)=g(x))也可以利用 solve 解方程组,详见 help 2)解微分方程 dsolve(s,s1,s2,x)%s1、s2、时初始条件 3)线性代数 MATLAB 中大多数用于数值线性代数的计算命令,都可以用于符号变量线性代数运算 4.化简和
13、代换 collect(s)%合并同类项 expand(s)%将乘积形式化为和式 simplify(s)%利用恒等式化简 hornor(s)%将多项式化为嵌套式 此外还有 simple 5.三种变换:傅立叶变换 fourier(f,trans_var,eval_point)反变换:ifourier()拉普拉斯变换 laplace(f,trans_var,eval_point)反变换:ilaplace()z 变换 ztrans(f,trans_index,eval_point)反变换:iztrans()的符号表达式命令 help symbolic 四.MATLAB 的图形和可视化 1.二维图形 p
14、lot(x,y)%最简单最常用的二维绘图命令 fplot(fname,lims,tol)%自适应二维函数绘图命令,在函数变化率大的部分密集采样绘图,提高图形真实性。2 图形标记 title(图形名称)%给图形命名 xlabel(x 轴坐标)ylabel(y 轴坐标名)text(x,y,标记)%在坐标点(x,y)处加标记 legend(图例 1,图例 2,)axis(x,y 的坐标范围)axis(on)%显示坐标 axis(off)另外绘图命令中还可以对图形的坐标,颜色,线型进行设定,详见 help 3.特殊坐标和图形 loglog(x,y)%双对数坐标 semilogy(x,y)%以 x 轴为
15、对数坐标 polar(theta,rho)%极坐标 stair(x,y)%阶梯图形 bar(x,y)%条形图 stem(x,y)%火柴杆状图 pie(x)%绘制饼状图 pie3(x)%绘制三维饼状图 ribbon(x,y,c)%绘制带状图,c 是颜色 4.其他命令 subplot(a,b,n)%将绘图区分为 a*b 区,选择其中的 n 区 hold%在原来视图中绘图 plotyy(x1,y1,x2,y2)%在同一坐标系中左右使用不同的坐标 5.填充命令 fill(x1,y1,x2,y2,c)%用 c 颜色填充由(x1,y1)、(x2,y2)确定的多边形 erea(x,y,r)%用 r 色填充由
16、 x,y 函数确定边界的区域 6.三维图形 1)绘图命令 plot3(x,y,z)%最基本的三维图形函数,函数除了增加第三维坐标外,功能和 plot 相同 mesh(x,y,z)%绘制三维网格图。在不需要特别精细的三维曲面结果时使用。surf(x,y,z)%绘制三维曲面图,各线条之间的补面用颜色填充 2)视点 view(方位角,俯视角)或者 view(x,y,z)%x,y,z观察点坐标 3)等高线 contour(x,y,z,n)%以 z 为高程值,x,y 为横纵坐标的平面等值线图,n 缺省值为 10 contour3(x,y,z,n)%三维等值线图 meshc(x,y,z)%绘制带等值线图的
17、网线图 其他相关的还有 pcolor()、meshz()、surfc()等,详见 help。7.符号绘图 ezplot(f,a,b)%二维符号绘图 ezplot3(f,a,b)%三维符号绘图 ezmesh()、ezsurf()%三维符号绘图 8.其他 1)球面绘图 sphere(n)%绘制单位球面,且球面上的网格线条数为 n cylinder(r,n)%轴线定位 z 轴 r 表示柱面的母线,是向量;n 表示柱面上网格线条数 五.MATLAB 程序设计 1.概述:1)MATLAB 有两种工作方式:一种是交互式的命令行工作方式;一种是 m 文件的程序工作方式。2)m 文件有两种:一种是命令文件,相
18、当于将命令行的命令先集中写好存在 m 文件中;一种是函数文件。2.命令文件 1)数据的输入输出 result=input(prompt)%提示输入一个量 disp(X)%isplay text or array pause(n)%暂停 n 秒,n 缺省时暂停至敲任意键结束。3.程序文件 function 输出形参表=fname(输入形参表)函数体 MATLAB 中的程序设计同样着重掌握 if 语句,while 语句,for 语句和 switch 语句等,同时MATLAB 中没有花括弧,每一条 if 或者 while 语句都需要用 end 结束。六.MATLAB 图形用户界面(GUI)设计 太难
19、,暂时跳过 七.基于 MATLAB 的大规模矩阵计算 1.稀疏矩阵 表 MATLAB 提供的创建稀疏矩阵函数表 sparse converts a full matrix to sparse form by squeezing out any zero elements.S=sparse(A)S=sparse(i,j,s,m,n)spdiags extracts all nonzero diagonals from the m-by-n matrix A.B=spdiags(A,d)A=spdiags(B,d,m,n)A=spdiags(B,d,A)spconvert converts a m
20、atrix D with rows containing i,j,s or i,j,r,s to the corresponding sparse matrix.S=spconvert(D)find locates all nonzero elements of array X,and returns the linear indices of those elements in vector ind ind=find(X)ind=find(X,k)row,col,v=find(X,.)speye orm an m-by-n sparse matrix with 1s on the main
21、diagonal S=speye(m,n)full converts a sparse matrix S A=full(S)to full storage organization 八.基于 MATLAB 的最优化问题求解 1.线性规划问题 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%求解线性规划问题,注意 f 为列向量 2.非线性问题 1)有约束一元函数 x=fminbnd(fun,x1,x2,options)%x1,x2 是取值范围 2)无约束多元函数 x=fminsearch(fun,x0,options)%x0 是初始值向量 x=fminunc(
22、fun,x0,options)注:当函数结束大于 2 时,使用 fminnuc 比 fminsearch 更有效,但当所选函数高度不连续时,使用 fminsearch 效果较好 3)有约束多元函数 x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)%nonlcon 通过指定函数柄来使用非线性约束,如:x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)%mycon 是定义好的非线性等式和不等式约束,缺省时用代替。3.二次规划问题 x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)%This MATLAB f
23、unction returns a vector x that minimizes 1/2*x*H*x+f*x.九.基于 MATLAB 的数据插值和拟合 1.一维数据插值 1)vq=interp1(x,v,xq,method)%x、v 是数据值,xq 是要求点,method 是具体算法 method 有四种:linear分段线性插值,缺省值 cubic分段三次多项式插值 spline三次样条插值,即在每个分段区间内构造一个三次多项式,使其插值函数满足插值条件,还要求在各个节点出具有光滑的条件 nearest最邻近区域插值 2)三次样条插值 yy=spline(x,Y,xx)pp=spline(
24、x,Y)%调用结果用 yyi=ppvsl(pp,xxi)2.二维数据插值 1)插值基点为网格节点(即节点有序)Vq=interp2(X,Y,V,Xq,Yq,method)%二维数据插值,用法和二维数据插值相同,method缺省值为 linear 2)插值基点为散乱节点 vq=griddata(x,y,v,xq,yq,method)3.曲线拟合 P=polyfit(x,y,N)%用 n 阶多项式拟合 x,y 向量给定的数据;PA=polyval(P,xi)%求 xi 点上的拟合函数近似值 十.基于 MATLAB 的图像处理初步 1.图像分类 1)索引图像:图像信息包含一个数据矩阵 X 和一个颜色
25、印象矩阵 MAP,MAP 矩阵的每一行分别表示红绿蓝的颜色值,MATLAB 中,索引图像是从像素值到颜色印象表值得“直接映射”2)灰度图像:一副灰度图像是一个数据矩阵 I,其中 I 中的数据均代表了在一定范围中的颜色灰度值。MATLAB 中把灰度图像存储在一个数据矩阵,该数据矩阵中的元素分别代表了图像中的像素。3)RGB 图像:即真彩图像,在 MATLAB 中存储为 n*m*3 的数据矩阵。数组中的元素定义了图像中每一个像素的红绿蓝的颜色值。4)二值图像:与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两灰度值。2.图像的读取和显示 info=imfinfo(文件名.格式)%获取图像信息 A=imread(filename,文件格式)X,map=imread(.)%二维图像读取,如索引图像 imwrite(A,filename)%writes image data A to the file specified by filename imshow 文件名.格式%显示图像 image(图像数据)%显示图像 3.图像格式之间的转换 详见 help。