您的当前位置:首页正文

Matlab学习笔记(全)

2024-03-13 来源:步旅网


Matlab学习笔记

王正盛 国防工业出版社

——《MATLAB与科学计算》

一.MATLAB入门 ............................................................................................................................ 4

who、whos和永久变量 .................................................................................................. 4 显示格式 ........................................................................................................................... 4 图形 ................................................................................................................................... 4

二.MATLAB数值计算 .................................................................................................................... 5

1.常用命令: .................................................................................................................... 5 2.矩阵的保存和获取 ........................................................................................................ 5 3.矩阵的运算和数组的运算 ............................................................................................ 5 4.线性方程组 .................................................................................................................... 5 5.多项式 ............................................................................................................................ 6 6.数值积分 ........................................................................................................................ 6 7.一般非线性方程组求解 ................................................................................................ 6 8.微分方程的数值求解 .................................................................................................... 7

三.MATLAB的符号计算 ............................................................................................................. 7

1.符号变量和符号表达式 ................................................................................................ 7 2.微积分运算 .................................................................................................................... 7 3.解方程 ............................................................................................................................ 8 4.化简和代换 .................................................................................................................... 8 5.MATLAB的符号表达式命令 ...................................................................................... 8

四.MATLAB的图形和可视化 ........................................................................................................ 9

1.二维图形 ........................................................................................................................ 9 2图形标记 ........................................................................................................................ 9 3.特殊坐标和图形 ............................................................................................................ 9 4.其他命令 ........................................................................................................................ 9 5.填充命令 ...................................................................................................................... 10 6.三维图形 ...................................................................................................................... 10 7.符号绘图 ...................................................................................................................... 10 8.其他 .............................................................................................................................. 10

五.MATLAB程序设计 .................................................................................................................. 10

1.概述: .......................................................................................................................... 10 2.命令文件 ...................................................................................................................... 11 3.程序文件 ...................................................................................................................... 11

六.MATLAB图形用户界面(GUI)设计 ................................................................................... 11 七.基于MATLAB的大规模矩阵计算 ......................................................................................... 11

1.稀疏矩阵 ...................................................................................................................... 11

八.基于MATLAB的最优化问题求解 ......................................................................................... 12

1.线性规划问题 .............................................................................................................. 12 2.非线性问题 .................................................................................................................. 12

1

3.二次规划问题 .............................................................................................................. 12

九.基于MATLAB的数据插值和拟合 ......................................................................................... 12

1.一维数据插值 .............................................................................................................. 12 2.二维数据插值 .............................................................................................................. 13 3.曲线拟合 ...................................................................................................................... 13

十.基于MATLAB的图像处理初步 ............................................................................................. 13

1.图像分类 ...................................................................................................................... 13 2.图像的读取和显示 ...................................................................................................... 13

2

3

一.MATLAB入门

who、whos和永久变量

who 变量名 %检查内存变量。 Whos %检查驻留变量的详细情况。

MATLAB自定义的永久变量:

eps %计算机中的最小正数 inf %无穷大 pi %圆周率 NaN %不定量 flops %浮点运算次数 i,j%虚数单位

显示格式

MATLAB中以短格式(5个有效数字)显示计算结果,可以用format命令改变数字显示格式

1. 变量的存储和调用

1) 存储当前工作空间中的变量

Save %将所有的变量存入文件MATLAB.mat中 Save mydate %将所有变量存入指定文件

Save mydate x y z %将指定的变量存入指定的文件中 2) 将数据文件的变量载入当前的工作空间 将save换作load即可

图形

1. 二维图形绘制命令 Plot(x,y);

2.三维图形绘制命令 Mesh(z);

2. 用户目录的建立

在命令窗口输入:cd c:\\mydir

4

二.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)%利用d构成对角矩阵D

Size:获取矩阵的行数和列数

2.矩阵的保存和获取

1)利用m文件

利用文件编辑器编辑矩阵AM=[1 2 3;4 5 6;7 8 9]——》保存为在自己的目录下名的matrix.m——》在MATLAB命令窗口中只要输入matrix就可以调用AM矩阵 2)通过mat文件

Mat文件是MATLAB中保存数据的一种标准格式二进制文件,通过save和load执行,如前所述

3) 利用外部数据文件装入到指定矩阵中

假如磁盘中已有名为c:\\mydir\\date.dat的二进制数据文件,利用load c:\\mydir\\date.dat命令可以在MATLAB工作空间中产生一个名为date的矩阵

3.矩阵的运算和数组的运算

矩阵运算是按矩阵的运算法则进行的;数组运算无论何种操作都是对元素逐个进行的,数组运算需要在运算符前加点号。

4.线性方程组

1)采用求逆运算:x=inv(A)*b; 2)采用左除运算:x=A\\b;

说明:只有在A是方阵时可以采用求逆运算;求逆运算没有左除运算好;一般都用左除运算吧

5

在解欠定方程时,解得结果是所有结果中范最小的一个

5.多项式

1. 多项式的创建

1) 多项式系数向量直接输入法

2) 利用指令:p=poly(AR);AR为多项式的根或者特征多项式

常用多项式的运算指令: R=roots(P)%求多项式的根

PA=polyval(p;S)%按数组运算规则计算多项式值。P是多项式,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用图形展示积分过程,精确度缺省时取0.001

S=quad8(‘fname’,j积分下限,积分上限,精确度,trace)

7.一般非线性方程组求解

1) 单变量非线性方程求解

先建立方程fname.m文件——》调用fzero求解

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)+y^2+log(z)-7; q(2)=3*x+2*y-z^3+1;

6

q(3)=x+y+z-5;

调用

x=fsolve('myxyz',[1 1 1])

8.微分方程的数值求解

[t,x]=ode23(‘fnanme’,to,tf,,x0,tol,trace) [t,x]=ode45(‘fnanme’,to,tf,,x0,tol,trace)

先建立微分方程fname.m文件——》调用ode23或ode45函数。

function yp=funt(t,y) yp=(y^2-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在定义符号变量时除了个数的差别外,还有定义的结果也不同,注意在MATLAB中体会。 f=sym(‘1+sin(x)’)

subs(f,old,new)%用新的符号变量代替旧的符号变量,可以是一个变量也可以是一个数组。

2.微积分运算

1)微分

diff(f,t,n) %函数f对t求导,如果t缺省,则字符表上最接近x的符号变量求导;n表示求导次数

7

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)求级数和

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.化简和代换

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()

5.MATLAB的符号表达式命令

help symbolic

8

四.MATLAB的图形和可视化

1.二维图形

plot(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轴为对数坐标 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)%在同一坐标系中左右使用不同的坐标

9

5.填充命令

fill(x1,y1,x2,y2,```,c) %用c颜色填充由(x1,y1)、(x2,y2)···确定的多边形 erea(x,y,’r’) %用r色填充由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) %绘制带等值线图的网线图 其他相关的还有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文件有两种:一种是命令文件,相当于将命令行的命令先集中写好存在m文件中;一种是函数文件。

10

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)设计

太难,暂时跳过

七.基于MATLAB的大规模矩阵计算

1.稀疏矩阵

表 MATLAB提供的创建稀疏矩阵函数表 sparse converts a full matrix to sparse S = sparse(A) form by squeezing out any S = sparse(i,j,s,m,n) zero elements. extracts all nonzero diagonals B = spdiags(A,d) from the m-by-n matrix A. A = spdiags(B,d,m,n) A = spdiags(B,d,A) converts a matrix D with rows S = spconvert(D) containing [i,j,s] or [i,j,r,s] to the corresponding sparse matrix. locates all nonzero elements of ind = find(X) array X, and returns the ind = find(X, k) linear indices of those [row,col,v] = find(X, ...) elements in vector ind orm an m-by-n sparse matrix S = speye(m,n) 11

spdiags spconvert find speye

with 1s on the main diagonal full converts a sparse matrix S to A = full(S) 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(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 function 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’分段三次多项式插值

12

‘spline’三次样条插值,即在每个分段区间内构造一个三次多项式,使其插值函数满足插值条件,还要求在各个节点出具有光滑的条件 ‘nearest’最邻近区域插值 2)三次样条插值 yy = spline(x,Y,xx)

pp = spline(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和一个颜色印象矩阵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

13

imshow 文件名.格式 %显示图像 image(图像数据)%显示图像 3.图像格式之间的转换 详见help。

14

因篇幅问题不能全部显示,请点此查看更多更全内容