MATLAB入门教程Word下载.docx
《MATLAB入门教程Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB入门教程Word下载.docx(34页珍藏版)》请在冰点文库上搜索。
命令窗口中的Demos链接。
1.1.5自由探索
用户可以尝试点击MATLAB界面上的各个按钮,看看它们的功能。
如果不小心关闭了当前路径窗口、命令历史记录窗口或命令窗口,可以通过菜单栏的“Desktop”菜单中“DesktopLayoutDefault”恢复,如图1.1.3所示:
图1.1.3把MATLAB界面窗口恢复为默认状态
1.2简单的计算与图形功能
1.2.1大材小用
在命令窗口中的>
>
后面输入:
1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9
并按回车键可得:
图1.2.1MATLAB的计算功能
上面输入的“1.369^2+sin(7/10*pi)*sqrt(26.48)/2.9”是一个命令,它要求MATLAB计算
的值。
经过MATLAB运算的结果为3.3097(近似值)。
可见MATLAB的数学表达式命令格式与很多常用的高级语言相似。
当然MATLAB的功能远远不止这种简单的计算。
点击命令窗口中的Demos链接就可以看到MATLAB的其他基本功能。
1.2.2打开简单的图形窗口
funtool
并按回车键可得如图1.2.2所示的三个窗口:
图1.2.2MATLAB的计算功能
其中上面的两个窗口“Figure1”和“Figure2”中所展示的就是下面的窗口“Figure3”中的两个函数“f=x”和“g=1”在区间[2,2]上的图象。
用户可以在“Figure3”的窗口中填写适当的函数表达式,回车后就可以从上面的窗口中观察到该函数的图象了,也可以通过“Figure3”中的功能键按钮,对所上述函数进行简单操作。
求函数f(x)的导数;
求函数f(x)的积分;
对函数f(x)简化;
求函数f(x)的分子部分;
求函数f(x)的分母部分;
求函数f(x)的倒数;
求函数的反函数。
第2章矩阵及其基本运算
本章从最基本的运算单元(矩阵)出发,介绍MATLAB的命令及其用法。
2.1矩阵的输入与生成
2.1.1实数值矩阵的输入
不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:
同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;
不同的行用分号(;
)分隔。
所有元素处于一对方括号([])内。
如:
图2.1.1输入一个行矩阵
注意:
命令行中的百分号(%)起注释的作用,MATLAB自动将%以及其后的内容显示为绿色,在执行这个命令行的命令时,自动忽略%以及其后的内容。
这一点与其他高级计算机语言是类似的。
又如,在命令窗口的提示符>
后面输入
X_Data=[2.323.43;
4.375.98]%这是一个2阶方阵
并按回车键可得
X_Data=
2.32003.4300
4.37005.9800
再如:
图2.1.2可以分行输入一个行矩阵
上面的所提到的逗号和分号在输入的时候要注意输入法状态。
以“智能ABC输入法”为例,在“全角
”或“中文标点
”格式下输入的逗号(,)和分号(;
)将会被MATLAB用红色提示为错误输入,如图2.1.3所示:
图2.1.3智能ABC输入法5.0版的几种输入状态
图2.1.4MATLAB提示
因此,应该在“半角”及“英文标点”格式
下输入标点符号,如逗号(,),分号(;
),句号/小数点(.)。
2.1.2特殊矩阵的生成
1.全零阵。
图2.1.5用函数zeros生成全零阵
2.单位阵。
图2.1.6用函数eye生成全零阵
3.全1阵。
函数ones
格式Y=ones(n)%生成n×
n全1阵
Y=ones(m,n)%生成m×
Y=ones(size(A))%生成与矩阵A相同大小的全1阵
2.2矩阵运算
2.2.1加、减运算(+,-)
图2.2.1矩阵的加减运算
如果把图2.2.1中的命令换成
A=[12;
34];
B=[5,6;
7,8];
C=A+B,D=A-B
则回车后,得到的结果就只有C和D的值了。
由此可见其中的两个分号(一个紧接着A=[12;
34]的后面,另一个紧接着B=[5,6;
7,8]的后面)的作用。
2.2.2乘法
1.两个矩阵相乘(*)。
图2.2.2两个矩阵的乘法运算
2.矩阵的数乘(*)。
图2.2.3矩阵的数乘运算
2.2.3除法运算
MATLAB提供了两种除法运算:
左除(\)和右除(/)。
当矩阵A可逆时,X=A\B是方程A*X=B的解(这里当然还要求A的行数=B的行数),而X=C/A是方程X*A=C的解(这里当然还要求A的列数=C的列数)。
图2.2.7左除和右除
2.2.4矩阵乘方(^)
图2.2.8矩阵的乘方
上面的[1,2;
2,1]^(-2)要求[1,2;
2,1]是可逆的。
2.2.5矩阵转置(’)
图2.2.9矩阵的转置
若A为复数矩阵,则A’表示A的共轭转置。
对于复数矩阵A,若仅希望转置,则用如下命令:
A.’。
见图2.2.10。
图2.2.10复矩阵的转置与共轭转置
2.2.6方阵的行列式(det)
命令格式:
det(A)
例如:
det([1,2;
3,4])
ans=
-2
又如:
A=[1,2,3;
4,5,6;
7,8,9];
D=det(A)
D=
0
2.2.7方阵的逆矩阵(inv)
inv(A)
inv([1,2;
-2.00001.0000
1.5000-0.5000
若A的行列式的值为0,则MATLAB在执行inv(A)这个命令时会给出警告信息。
例如
图2.2.11对奇异矩阵求逆时MATLAB给出的警告信息
也可以用初等变换的方法来求逆矩阵。
图2.2.12用初等变换的方法来求逆矩阵
用formatrat命令可以使输出格式为有理格式。
图2.2.13以有理格式输出结果
第3章线性方程组
其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:
(1)x=inv(A)*b—采用求逆运算解方程组;
(2)x=A\b—采用左除运算解方程组。
例:
x1+2x2=8
2x1+3x2=13
A=[1,2;
2,3];
b=[8;
13];
x=inv(A)*b
x=
2.00
3.00
x=A\b
2.00
3.00;
即二元一次方程组的解x1和x2分别是2和3。
对于用matlab解多次的方程组,有符号解法,方法是:
先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下:
第一步:
定义变量symsxyz...;
第二步:
求解[x,y,z,...]=solve('
eqn1'
'
eqn2'
...,'
eqnN'
var1'
var2'
...'
varN'
);
第三步:
求出n位有效数字的数值解x=vpa(x,n);
y=vpa(y,n);
z=vpa(z,n);
...。
解二(多)元二(高)次方程组:
x^2+3*y+1=0
y^2+4*x+1=0
解法如下:
symsxy;
[x,y]=solve('
x^2+3*y+1=0'
y^2+4*x+1=0'
x=vpa(x,4)
y=vpa(y,4)
结果是:
1.635+3.029*i
1.635-3.029*i
-.283
-2.987
y=
1.834-3.301*i
1.834+3.301*i
-.3600
-3.307。
二元二次方程组,共4个实数根;
用matlab解高次方程组(非符号方程组)
解答如下:
基本方法是:
solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,求解变量分别v1,v2,…,vn。
具体例子如下:
x^2+x*y+y=3
x^2-4*x+3=0
解法:
[x,y]=solve('
x^2+x*y+y=3'
x^2-4*x+3=0'
)
运行结果为
x=
13
y=
1-3/2
即x等于1和3;
y等于1和-1.5
或
[x,y]=solve('
x^2-4*x+3=0'
x'
y'
1
3
结果一样,二元二方程都是4个实根。
通过这三个例子可以看出,用matlab解各类方程组都是可以的,方法也有多种,只是用到解方程组的函数,注意正确书写参数就可以了,非常方便。
。
第4章二维绘图和三维绘图
MATLAB有很强的绘图功能。
本章介绍一些简单的二维绘图和三维绘图命令。
4.1二维图形的绘制
4.1.1二维曲线的简捷绘制
例4.1.1.画出y=xcosx在区间[4,4]上的图形。
解:
在MATLAB的命令窗口输入如下命令:
ezplot('
x*cos(x)'
[-4*pi,4*pi])
运行后得:
图4.1.1用ezplot命令绘制的y=xcosx的图象
例4.1.2.画出椭圆
在区域[3,3][4,4]内的图形。
x^2/4+y^2/5-1'
[-3,3,-4,4])
图4.1.2用ezplot命令绘制的x2/4+y2/5=1的图象
例4.1.3.画出曲线
在区间[0,]内的图形。
sin(3*t)*cos(t)'
'
sin(3*t)*sin(t)'
[0,pi])
图4.1.3用ezplot命令绘制的参数曲线的图象
4.1.2在同一个坐标系内绘制多条曲线
plot(x1,y1,'
s1'
x2,y2,'
s2'
…)
其中:
'
等为可选参数,用来指定绘制曲线的线型、颜色、数据点形状等。
线型可选参数有:
-(实线),:
(虚线),-.(点划线)和--(双划线)。
颜色可选参数有:
y(黄色),m(品红色),c(青色),r(红色),g(绿色),b(蓝色),w(白色)和k(黑色)。
数据点可选参数有:
.(实心点),o(圆圈),x(叉),+(十字),*(星号),s(方块),d(菱形),v(下三角),^(上三角),<
(左三角),>
(右三角),p(五角星)和h(六角星)。
例4.1.4.在同一个坐标系内画出y=e0.1xsin2x和y=xcosx在区间[,]上的图形。
x=-pi:
0.1:
pi;
%设置x的取值范围和取点间距
y1=exp(0.1*x).*sin(2*x);
y2=x.*cos(x);
%注意其中的.*
plot(x,y1,'
*r'
x,y2,'
ob'
)%两条曲线用不同的数据点形状和颜色
图4.1.4在同一个坐标系内绘制多条曲线
4.2三维图形的绘制
4.2.1三维曲线的绘制
plot3(x1,y1,z1,'
x2,y2,z2,'
等为可选参数,与plot中的用法完全相同,不选则使用默认设置。
如果只绘制一条三维曲线,也可以用简捷的绘制命令ezplot3,命令格式与ezplot类似。
见下面的例子。
例4.2.1.绘制三维螺线
在区间[0,4]上的图形。
(方法一)在MATLAB的命令窗口输入如下命令:
t=0:
4*pi;
x=2*cos(t);
y=2*sin(t);
z=1.5*t;
plot3(x,y,z),xlabel('
),ylabel('
),zlabel('
z'
)%标识坐标轴
运行后得图4.2.1。
图4.2.1用plot3绘制的三维螺线图4.2.2用ezplot3绘制的三维螺线
(方法二)在MATLAB的命令窗口输入如下命令
ezplot3('
2*cos(t)'
2*sin(t)'
1.5*t'
[0,4*pi])
运行后得图4.2.2。
4.2.2三维网线图与表面图的绘制
mesh(x,y,z)%绘制三维网线图
surf(x,y,z)%绘制三维表面图
也可以在调用命令时增加可选参数来改变图形的颜色和线型。
还可以用简捷的绘制命令ezmesh与ezsurf绘制三维网线图与表面图。
例4.2.2.画出曲面z=sin(xy)在区域[2,2][2,2]上的图形。
x=-2:
2;
y=-2:
[X,Y]=meshgrid(x,y);
%用x和y产生“格点”矩阵
Z=sin(X.*Y);
%计算“格点”矩阵的每个“格点”上的函数值
mesh(X,Y,Z)%绘制网线图
运行后得图4.2.3。
图4.2.3用mesh绘制的三维网线图
如果将上面的mesh(X,Y,Z)换成surf(X,Y,Z),则运行后得图4.2.4。
图4.2.4用surf绘制的三维表面图
例4.2.3.画出曲面z=
的图形。
ezsurf('
x*exp(-x^2-y^2)'
)
运行后得图4.2.5。
图4.2.5用ezsurf绘制的三维表面图
4.2.3特殊曲面的绘制
对于空间曲面F(x,y,z)=0,我们通常采用平行截面法来认识该曲面的特性。
即用平行于坐标面的平面去“截”曲面F(x,y,z)=0,通过研究交线的性质来充分认识曲面的性质。
例4.2.4.绘制马鞍面z=x2y2的图形,并用平行截面法观察马鞍面的特点。
edit%新建一个M文件
或者点击MATLAB的菜单栏的“file”按钮,并从弹出的菜单中选择“new”,然后从其子菜单中选择“M-File”(如图4.2.6所示).
图4.2.6新建一个M文件
还可以直接点击MATLAB的工具栏的“”按钮,新建一个M文件.
MATLAB会弹出如图4.2.7所示的M文件编辑器.
图4.2.7M文件编辑器
在上述M文件编辑器中输入如下内容:
%绘制马鞍面z=x^2y^2的图形,并用平行截面法观察马鞍面的特点
x=-4:
4;
y=x;
Z=X.^2-Y.^2;
ix=find(X==2);
%找到x坐标=2的点的位置
px=2*ones(1,length(ix));
%“截痕”上的点的x坐标
py=Y(ix);
%“截痕”上的点的y坐标
pz=Z(ix);
%“截痕”上的点的z坐标
subplot(1,2,1)%把图形窗口划分成1行2列,并在第1个块里建立起坐标系
holdon%保留当前的绘图和确定轴的性质,使后续的图形命令加入现存的图形
plot3(px,py,pz,'
r*'
)%用红色的星号绘制截痕曲线
subplot(1,2,2)%在第2个块里建立起坐标系
plot3(px,py,pz)%在第2个块里绘制“截痕”曲线
%要保存这个M文件可以点击工具栏上的“软盘图标”按钮,
%或从菜单栏选择“Save”或“Saveas”
%首次保存(或用“Saveas”另存)一个M文件都需要指定路径和文件名
%为了不引起麻烦,M文件应该用英文开头(可含数字)的字符串命名
%例如:
ma_an_mian_2007
%要运行这个文件中的程序,有以下三种方法:
%[1]点击文件编辑器上面的菜单[Debug](有些版本可能选[Tools])
%点击选项[run](或[SaveandRun])
%这时在MATLAB工作空间中将会出现该程序执行的结果
%[2]按"
F5"
%[3]直接在MATLAB命令窗中输入这个文件的文件名,然后回车
运行后得图4.2.8。
图4.2.8马鞍面及其被平面所截得的截痕
图4.2.8中左边所显示的是从该马鞍面的正上方俯视的效果。
在该窗口的工具栏中选择三维旋转工具
,可以改变视角,得到图4.2.9所示的效果。
图4.2.9马鞍面及其被平面所截得的截痕(新角度)
4.2.4精细绘制特殊的曲面
例4.2.5.绘制旋转抛物面z=x2+y2的图形。
(粗糙绘制)在MATLAB的命令窗口输入如下命令:
Z=X.^2+Y.^2;
surf(X,Y,Z)%绘制曲面
运行后得图4.2.10(用三维旋转工具调整过角度)。
图4.2.10旋转抛物面
(精细绘制)在MATLAB的命令窗口输入如下命令:
0.01:
ii=find(Z>
4);
%找到Z>
4的点
Z(ii)=NaN;
%“镂空”Z>
4的点(NaN=NotaNumber不是数)
mesh(X,Y,Z)%绘制曲面,这里用mesh比用surf效果好
运行后得图4.2.11。
图4.2.11精细绘制的旋转抛物面
也可以用下面的程序精细绘制上述旋转抛物面:
z=0:
%设置z的取值范围和取点间距
y=sqrt(z);
%y=z^(1/2)
[xb,yb,zb]=cylinder(y,100);
%以y为半径产生“旋转面”上的点阵,100点/圈
mesh(xb,yb,zb)%绘制曲面
4.2.5在同一个坐标系里绘制多个曲面
例4.2.6.在同一个坐标系内观察三个平面
1:
x+yz=0;
2:
2xyz+2=0;
3:
z=0
看它们是否交于一点。
x=-20:
20;
y=x;
Z1=X+Y;
%平面1
Z2=2*X-Y+2*ones(size(X));
%平面2
Z3=zeros(size(X));
%平面3
surf(X,Y,Z1),holdon,mesh(X,Y,Z2),mesh(X,Y,Z3)
运行后得图4.2.12。
图4.2.12在同一个坐标系内绘制多个曲面
可见这3个平面交于一点。