matlab入门基础知识精心整理比较完整.docx
- 文档编号:4448505
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:34
- 大小:66.79KB
matlab入门基础知识精心整理比较完整.docx
《matlab入门基础知识精心整理比较完整.docx》由会员分享,可在线阅读,更多相关《matlab入门基础知识精心整理比较完整.docx(34页珍藏版)》请在冰豆网上搜索。
matlab入门基础知识精心整理比较完整
MATLAB基础知识
MATLAB的主要功能
1.数值计算和符号计算功能
例如,求解线性方程组
在MATLAB命令窗口输入命令:
a=[2,3,-1;3,-5,3;6,3,-8];
b=[7;8;9];
x=inv(a)*b
也可以通过符号计算来解此方程
symsx1x2x3
[x1,x2,x3]=solve(2*x1+3*x2-x3-7,3*x1-5*x2+3*x3-8,6*x1+3*x2-8*x3-9)
2.绘图功能
例如,分别绘制函数y=300sinx/x和y=x2的曲线
x=-20:
0.1:
20;
plot(x,300*sin(x)./x,':
',x,x.^2);
3.程序设计语言功能
MATLAB是解释性语言,程序执行速度较慢,而且不能脱离MATLAB环境而独立运行。
MathWorks公司提供了将MATLAB源程序编译为独立于MATLAB集成环境运行的EXE文件以及将MATLAB程序转化为C语言程序的编译器。
4.扩展功能
MATLAB包含两部分内容:
基本部分和各种可选的工具箱。
基本部分构成了MATLAB的核心内容,也是使用和构造工具箱的基础。
工具箱扩展了MATLAB的功能。
功能性工具箱
学科性工具箱
MATLAB的集成开发环境
命令窗口(CommandWindow)用于输入命令并显示除图形以外的所有执行结果。
一般来说,一个命令行输入一条命令,命令行以回车或分号结束
但一个命令行也可以输入若干条命令,各命令之间以逗号或分号隔开
如果一个命令行很长,一个物理行之内写不下,可以在第1个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。
3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。
例如:
z=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+…
1/(1*2*3*4*5)
工作空间(Workspace)是MATLAB用于存储各种变量的内存空间。
当前目录(CurrentDirectory)是指MATLAB运行时的工作目录,只有在当前目录下的文件、函数才可以被运行或调用。
如果没有特殊指明,数据文件也将存放在当前目录下。
命令历史窗口
自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。
而且,通过双击命令可进行历史命令的再运行。
MATLAB的帮助功能
进入MATLAB帮助界面可以通过以下方法。
●单击MATLAB主窗口工具栏中的Help按钮。
●输入帮助命令。
帮助命令
1.help命令
在命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目。
help加函数名:
显示该函数的帮助说明。
例如helpmagic
2.lookfor命令
例如lookforfourier
演示系统
在命令窗口输入“demos”,或者选择主窗口“Help”菜单中的“Demos”子菜单,打开的演示系统如图所示。
MATLAB的变量和数据操作
预定义变量
1.变量命名
变量名只能是以字母开头,后接字母、数字或下画线的字符序列,最多63个字符。
例如x、x_1、xy12
在MATLAB中,变量名区分字母的大小写。
例如addr、Addr和ADDR表示3个不同的变量。
2.赋值语句
MATLAB赋值语句有两种格式:
(1)变量=表达式;
(2)表达式
第1种语句形式下,MATLAB将右边表达式的值赋给左边的变量
第2种语句形式下,将表达式的值赋给MATLAB的预定义变量ans。
在语句的最后加分号,那么,MATLAB仅仅执行赋值操作,不再显示运算的结果。
注释以%开头
计算表达式的
值,并将结果赋给变量y,然后显示出结果。
x=sqrt(1+pi);
y=(exp(x)+log(abs(sin(x)^2-sin(x*x))))/(x-5*i)
y=
0.5690+1.3980i
其中,pi和i都是MATLAB定义的变量,分别代表圆周率π和虚数单位。
预定义变量
3.变量的管理
变量的显示与删除
显示
who
whos还给出它们的维数、所占字节数以及变量的类型。
删除
clc
clear
变量文件
利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来。
MAT文件是MATLAB保存数据的一种标准格式二进制文件,扩展名是.mat。
MAT文件的生成和装入
save文件名[变量名表][-append][-ascii]
load文件名[变量名表][-ascii]
数据的输出格式
输入x=[4/31.2345e-6]
系统默认小数点后四位
用format命令设置数据输出格式
format格式符
短格式(short):
1.33330.0000
短格式e方式(shorte):
1.333e+001.2345e-06
长格式(long):
1.333333333333330.00000123450000
长格式e方式(longe):
1.33333333333333e+0001.23450000000000e-006
银行格式(bank):
1.330.00
十六进制格式(hex):
3ff55555555555553eb4b6231abfd271
MATLAB矩阵及基本运算
矩阵的生成
1.直接输入法
将矩阵的所有元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
矩阵元素也可以是表达式,MATLAB将自动计算结果。
例如:
B=[10,5-sqrt(7),sin(pi/2);7,4*8,abs(-7)]
矩阵元素可以是复数虚部i
也可以分别建立实部矩阵和虚部矩阵,再合起来构成复数矩阵。
例如:
R=[1,2,3;4,5,6];
I=[1.1,2.2,3.3;4.4,5.5,6.6];
ri=R+i*I
利用已建好的矩阵建立更大的矩阵
例如:
A=[1,2,3;4,5,6;7,8,9];
B=[11:
13;14:
16;17:
19];
C=[A,B;B,A]
2.冒号表达式
利用冒号可以产生行向量。
冒号表达式的一般格式为a:
b:
c
其中,a为初始值,b为步长,c为终止值(c > a)。
例如:
t=0:
2:
10
t=
0246810
还可以用linspace函数产生行向量。
其调用格式为
linspace(a,b,n)
其中a和b是生成向量的第1个和最后一个元素,n是元素总数。
当n省略时,自动产生100个元素。
显然,linspace(a,b,n)与a:
(b − a)/(n − 1):
b等价。
矩阵(元素)的替换、提取和矩阵拆分
如果想将矩阵A的第2行第3列的元素赋为76,则可以通过下面语句来完成:
A(2,3)=76不影响其他元素的值。
也可以采用矩阵元素的序号来引用矩阵元素。
矩阵元素按列编号,先第1列,再第2列,依次类推。
以m × n矩阵A为例,矩阵元素A(i,j)的序号为(j−1)*m + i。
size(A)函数返回包含两个元素的向量,分别是矩阵A的行数和列数
length(A):
给出行数和列数中的较大者
利用冒号表达式获得子矩阵
①A(m,n)表示取A矩阵第m行、第n列的元素
A(m,:
)表示取A矩阵第m行的全部元素
A(:
n)表示取A矩阵的第n列全部元素
②A(m1:
m2,:
)表示取A矩阵第m1~m2行的全部元素
A(:
n1:
n2)表示取A矩阵第n1~n2列的全部元素,
A(m1:
m2,n1:
n2)表示取A矩阵第m1~m2行内,并在第n1~n2列中的所有元素。
利用空矩阵删除矩阵的元素
空矩阵是指无任何元素的矩阵,表示形式为[]。
给变量x赋空矩阵的语句为
x=[]
将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。
例如:
A=[123456;789101112;131415161718];
A(:
[24])=[]
算术运算
MATLAB的基本算术运算有:
+(加)、−(减)、*(乘)、/(右除)、\(左除)、^(乘方)。
(1)矩阵加减运算
运算规则是:
若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。
如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。
一个标量也可以和其他不同维数的矩阵进行加减运算。
例如:
x=[2,-1,0;3,2,-4];
y=x-1;
y=y+x
(2)矩阵乘法
矩阵A和B进行乘法运算,要求A的列数与B的行数相等,或称A和B两矩阵维数相容。
如果两者的维数不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。
例如:
A=[1,2,3;4,5,6];
B=A*A
?
?
?
ErrorInnermatrixdimensionsmustagree.
在MATLAB中,还可以进行矩阵和标量相乘。
矩阵和标量相乘是矩阵中的每个元素与此标量相乘。
(3)矩阵除法
在MATLAB中,有两种矩阵除法运算:
\和/,分别表示左除和右除。
如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。
A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。
(4)矩阵的乘方
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
2.点运算
两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。
点运算符有.*、./、.\和.^。
例如:
A=[1,2,3;4,5,6;7,8,9];
B=[-1,0,1;1,-1,0;0,1,1];
C=A.*B
C=
-103
4-50
089
如果A、B两矩阵具有相同的维数,则A./B表示A矩阵除以B矩阵的对应元素。
B.\A等价于A./B。
3.MATLAB常用数学函数
例如:
y=sin(0:
pi/2:
2*pi)
y=
01.00000.0000-1.0000-0.0000
y=abs(y)
y=
01.00000.00001.00000.0000
abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。
x=[-3.14,3+4i];
abs(x)
ans=
3.14005.0000
用于取整的函数有fix、floor、ceil、round
向0方向取整函数fix:
调用格式为I=fix(X),功能:
返回X中每个元素的最靠近零的整数,若X为复数,则分别对X实部和虚部取整。
向-∞方向取最小整数函数floor
向∞方向取最大整数函数ceil
四舍五入取整函数round
模数余函数mod:
调用格式为M=mod(X,Y),功能:
返回X关于Y的余数,其算法为:
mod(X,Y)=x-y.*floor(X./Y)例如:
>>x1=mod(16,3)>>x2=mod(-16,3)>>x3=mod(16,-3)
x1=x2=x3=
12-2
除后余数函数rem:
调用格式为M=rem(X,Y),功能:
返回X关于Y的余数,其算法为:
rem(X,Y)=x-y.*fix(X./Y),相当于去零留整,与C语言中取余%功能相同例如:
>>x1=rem(16,3)>>x2=rem(-16,3)>>x3=rem16,-3)
x1=x2=x3=
1-11
符号函数sign:
调用格式为sign(X),功能:
若X>0,返回1;若X=0,返回0;若X<0,返回-1。
若X为复数,则算法为:
sign(X)=X./abs(X).
字符与字串:
建立一维数组:
把字符置于单引号内就定义了字符数组,只不过是一维数组,即字符向量。
例如下面的语句建立了1×13字符数组,名字叫name。
>>name='ThomasR.Lee';
>>whosname
NameSizeBytesClassAttributes
name1×1326char
class和ischar函数都能认识变量name是字符数组。
>>class(name)>>ischar(name)
ans=ans=
char1
可以使用字串连接函数strcat和strvcat,或者使用连接运算符[]把两个或多个字符数组连接在一起,形成一个新字符数组,先认识下面两个函数:
strcat函数调用格式:
t=strcat(s1,s2,s3,...),strcat函数横向连接字符数组s1、s2、s3等对应的行,所有的输入数组必须有相同的行数(或任意一个是单一字串),输入字符数组中的尾部空格被忽略,不出现在输出中,但字串单元数组中的尾部空格会保留。
而使用连接运算符[]时,会保留尾部空格,这是它和strcat函数的的区别。
例如:
>>s1='everybody';
>>s2='goodbye';
>>strcat(s1,s2)
ans=
everybodygoodbye
>>t=[s1,s2]
t=
everybodygoodbye
strvcat函数调用格式为:
S=strvcat(t1,t2,t3,...),strvcat函数纵向连接字符数组t1、t2、t3等,形成一个新字符数组S。
Strvcat在较短的字串后添加空格,以便与最长的字串等长,输入的空数组会被忽略。
例如:
命令strvcat('Hello','MAT')和['Hello','MAT']基本一样,不同的是strvcat函数在MAT后面加了3个空格。
>>strvcat('Hello','MAT')>>['Hello','MAT']
ans=ans=
HelloHello
MATMAT
建立二维数组:
一定保证每一行都有相同的长度,当几个不同长度的字串建立字符数组时,可以人为的在较短的字串后添加空格,强制每行都有一样的长度例如:
>>name1=['ThomasR.Lee',SeniorDeveloper];%有3个空格
建立字符数组一个简单方法是用char函数。
Char能够自动对所有字串添加尾部空格,使它们与最长的输入字串等长,还是上面字串,可用char函来建立:
>>name2=char(''ThomasR.Lee',SeniorDeveloper')
Name2=
ThomasR.Lee
SeniorDeveloper
字串比较strcmp函数调用格式为k=strcmp('str1','str2'),功能:
比较字串str1和str2,相等则k=1,否则k=0
例:
>>k=strcmp('Hi','Hello')
K=
0%k=0表示两个字串不相等
strncmp函数调用格式为k=strncmp('str1','str2',n),功能:
比较字串str1和str2前面n个字符,相等则k=1,否则k=0
例:
>>k=strncmp('Hi','Hello',1)
K=
1%k=1表示两个字串前1个相等
strcmpi函数调用格式为k=strcmpi('str1','str2'),功能与strcmp一样只是不区分大小写。
4 strncmpi函数调用格式为k=strncmpi('str1','str2',n),功能与strncmp一样只是不区分大小写。
比较字串中的单个字符,直接使用关系运算符即可例:
>>A='adbddf';
>>B='ddbaaf';
>>A=B
ans=
011001
关系运算
<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、= =(等于)、~=(不等于)
若关系成立,关系表达式结果为1,否则为0。
例如:
A=5
A=5
A=A==10
A=0
当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素逐个进行,并给出比较结果。
最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。
最终的运算结果是一个维数与矩阵相同的矩阵,它的元素由0或1组成。
逻辑运算
&(与)、|(或)和~(非)。
此外,MATLAB还提供了4个逻辑运算函数:
and(a,b)、or(a,b)、not(a)和xor(a,b)。
在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
例如:
A=[23,54,12,6,-78];
B=[5,324,7,-43,76];
C1=A>10&B<10
C1=
10100
C2=xor(A>10,B<10)
C2=
01010
建立矩阵A,然后找出在 [10,20] 区间的元素的位置。
A=[4,15,-45,10,6;56,0,17,-45,0]
A=
415-45106
56017-450
find(A>=10&A<=20)
ans=
3
6
7
字符串
构建方式是通过单撇号括起来的字符序列来实现的。
例如:
xm='Beijing2008'
xm=
Beijing2008
MATLAB将一个字符串当作一个行向量,每个元素对应一个字符。
多行字符串要求各行字符数要相等。
字符串是以ASCII形式存储的。
abs和double函数都可以用来获取字符串矩阵所对应的ASCII数值矩阵。
相反,char函数可以把ASCII矩阵转换为字符串矩阵。
建立一个字符串向量,然后对该向量做如下处理。
(1)取第1~5个字符组成的子字符串。
(2)将字符串中的小写字母变成相应的大写字母,其余字符不变。
(3)统计字符串中小写字母的个数。
命令如下:
ch='WelcometoBeijing';
subch=ch(12:
18)%取子字符串
k=find(ch>='a'&ch<='z');%找小写字母的位置
ch(k)=ch(k)-('a'-'A');%将小写字母变成相应的大写字母
char(ch)
length(k)%统计小写字母的个数
ans=
14
(1)若字符串中的字符含有单撇号,则该单撇号字符应用两个单撇号来表示。
例如:
disp('It''sabook.')
将输出:
It'sabook.
(2)可以用字符串向量的形式连接多个字符串,即用中括号括起来。
例如:
x=8;
y=10;
disp([num2str(x),'+',num2str(y),'=',num2str(x+y)])
其中disp函数的自变量是一个长字符串。
输出为
8+10=18
MATLAB程序设计
学习目标
●掌握建立和执行M文件的方法。
●掌握利用if语句、switch语句实现选择结构的方法。
●掌握利用for语句、while语句实现循环结构的方法。
●熟悉利用向量运算来代替循环操作的方法。
●掌握定义和调用MATLAB函数的方法。
M文件
M文件的建立与打开
M文件可以根据调用方式的不同分为两类:
命令文件(ScriptFile)和函数文件(FunctionFile)
(1)命令文件没有输入参数,也不返回输出参数,而函数文件可以带输入参数,也可返回输出参数。
(2)命令文件对MATLAB工作空间中的变量进行操作,文件中所有命令的执行结果也完全返回到工作空间中,而函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。
(3)命令文件可以直接运行,在MATLAB命令窗口输入命令文件的名字,就会顺序执行命令文件中的命令,而函数文件不能直接运行,而要以函数调用的方式来调用它。
1.数据的输入
从键盘输入数据,可以使用input函数来进行,该函数的调用格式为
A=input(’提示信息’,选项);
提示信息为一个字符串,用于提示用户输入什么样的数据。
例如,从键盘输入A矩阵,可以采用下面的命令来完成:
A=input('输入A矩阵:
');
‘s’选项允许用户输入一个字符串。
例如,想输入一个人的姓名,可采用命令:
xm=input('What''syourname?
','s');
2.数据的输出
数据的输出主要采用disp函数,其调用格式为
disp(输出项)
其中,输出项既可以为字符串,也可以为矩阵。
例如:
A='Hello,World!
';
disp(A)
程序控制结构
顺序结构
顺序结构是指按照程序中语句的排列顺序依次执行。
例求一元二次方程ax2 + bx + c = 0的根。
直接根据求根公式求根。
a=input('a=?
');
b=input('b=?
');
c=input('c=?
');
d=b*b-4*a*c;
x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];
disp(['x1=',num2str(x
(1)),',x2=',num2str(x
(2))]);
程序的暂停
当程序运行时,有时需要暂停程序的执行,可以使用pause函数,其调用格式为
pause(延迟秒数)
如果省略延迟时间,则将暂停程序,直到用户按任一键后程序继续执行。
若要强行中止程序的运行可使用Ctrl+C组合键。
选择结构
选择结构是根据给定的条件成立或不成立,分别执行不同的语句。
1.if语句
(1)单分支if语句:
if条件
语句块
end
当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。
(2)双分支if语句:
if条件
语句块1
else
语句块2
end
当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。
例计算分段函数:
程序如下:
x=input('请输入x的值:
');
ifx<0
y=log(x*x+1)+sqrt(x*x+1);
else
y=sin(x)/(x+1);
end
disp(y)%可以去掉disp
(3)多分支if语句:
if条件1
语句块1
elseif条件2
语句块2
……
elseif条件n
语句块n
else
语句块n+1
end
例输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。
c=input('请输入一个字符','s');
ifc>='A'&c<='Z'
disp(lower(c));
elseifc>='a'&c<='z'
disp(upper(c));
elseifc>='0'&c<='9'
disp(str2num(c)^2);
else
disp(c);
end
2.switch语句
switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为
switch表达式
case结果表1
语句块1
case结果表2
语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 入门 基础知识 精心 整理 比较 完整
![提示](https://static.bdocx.com/images/bang_tan.gif)