MATLAB基础Word文件下载.docx
- 文档编号:20804941
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:94.58KB
MATLAB基础Word文件下载.docx
《MATLAB基础Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB基础Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
3.1416
二位整数,四位小数
formatshorte
3.1416e+000
5位十进制数加指数
formathex
400921fb54442d18
16位十六进制数
formatbank
3.14
两位小数
format+
+
正、负或零
formatrat
355/113
分数近似
MATLAB默认的显示格式是formatloose(稀疏格式),屏幕的显示会有很多空行,而如果用显示格式命令formatcompact(紧凑格式),则会用紧凑格式显示。
2、矩阵及其元素的赋值
(1)MATLAB中的变量或常量都代表矩阵,标量应看作1×
1阶的矩阵。
(2)矩阵的赋值:
①矩阵的值放在方括号中;
②一行中各元素之间以逗号或者空格分开,不同的行则以分号隔开;
③句的结尾可用回车符或逗号,此时会立即显示运算结果。
如果不希望显示结果,就以分号结尾。
此时运算仍然执行,只是不显示。
④变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵(也称为数组或向量)中的元素用一个下标表示,二维的矩阵可有两个下标数,以逗号分开。
赋值语句一般形式为:
变量=表达式(或数)
例如:
输入语句
a=[123;
456;
789]
则显示结果为
a=
123
456
789
Ø
元素可以用表达式代替。
如输入x=[-1.3sqrt(3)(1+2+3/5*4)]
x=
-1.30001.73214.8000
可以单独给矩阵的元素赋值。
如x
(2)=1.7321,a(2,3)=6等。
如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。
跳空的元素会被自动赋值为0。
如x(5)=abs(x
(1))
则得x=-1.30001.73214.800001.3000
又如键入a(4,3)=6.5,则得
1.00002.00003.0000
4.00005.00006.0000
7.00008.00009.0000
006.5000
给全行赋值,可用冒号。
如给a的第5行赋值。
键入a(5,:
)=[5,4,3]得
1.00002.00003.0000
4.00005.00006.0000
7.00008.00009.0000
006.5000
5.00004.00003.0000
要取出a的第2、4行及第1、3列交点上的元素取出,构成一个新矩阵b。
可键入b=a([2,4],[1,3])得
b=
4.00006.0000
06.5000
要抽除a中的第2、4、5行,可利用空矩阵[](指没有元素的矩阵,对任何一个矩阵赋值[],就是使它的元素都消失,注意它与“零矩阵”不同)。
键入a([2,4,5],:
)=[]得
123
789
对于“变量=表达式(或数)”的赋值形式,如果不要等式左端而只剩下右端,则MATLAB会自动给出一个临时变量ans,把右端的结果暂存于ans中。
例如键入a/7得
ans=
0.14290.28570.4286
1.00001.14291.2857
3、复数矩阵、运算及其赋值
(1)MATLAB的每一个元素都可以是复数,复数的虚数部分用i或j表示,这是在MATLAB启动时就在内部设定的。
MATLAB中所有的运算符和函数都对复数有效。
键入c=3+5.2i或c=3+5.2j得
c=
3.0000+5.2000i
(2)复数矩阵有两种赋值方法。
对复数矩阵的元素逐个赋值。
如键入z=[1+2i,3+4i;
5+6i,7+8i]得
z=
1.0000+2.0000i3.0000+4.0000i
5.0000+6.0000i7.0000+8.0000i
对其实部矩阵和虚部矩阵分别赋值。
如键入z=[1,3;
5,7]+[2,4;
6,8]*i得
注意:
①只有数字与i的乘积可以省略乘号,在上述矩阵式中若省略乘号*,就会出错。
②如果在前面程序中曾给i或j赋过其他值,则i或j已不是虚数符号,那么这些虚数赋值语句就不对了。
此时应键入cleari,j,即把原赋的i,j清掉,然后再执行复数赋值语句。
(3)复数矩阵的转置、共轭运算
函数conj对矩阵的每个元素求共轭,即把各元素的虚部反号。
运算符'
对矩阵作共轭和转置,即把其行列互换,同时把各元素的虚部反号。
因此,如果只求转置而不要共轭,就把conj和'
结合起来使用。
例如键入w=z'
u=conj(z),v=conj(z)'
得
w=
1.0000-2.0000i5.0000-6.0000i
3.0000-4.0000i7.0000-8.0000i
u=
1.0000-2.0000i3.0000-4.0000i
5.0000-6.0000i7.0000-8.0000i
v=
1.0000+2.0000i5.0000+6.0000i
3.0000+4.0000i7.0000+8.0000i
4、基本矩阵
单位矩阵eye(n)是n×
n阶的方阵,其对角线上的元素为1,其余元素均等于0。
全0矩阵zeros(m,n)是m×
n的所有元素均为0的矩阵。
全1矩阵ones(m,n)是m×
n的所有元素均为1的矩阵。
均分向量linspace(a,b,n)是在a与b之间均匀地产生n个点值,形成n维向量。
如:
键入f1=ones(3,2),f2=zeros(2,3),f3=eye
(2)得
f1=
11
f2=
000
f3=
10
01
键入f4=linspace(0,1,5)得
f4=
00.25000.50000.75001.0000
大矩阵可由小矩阵组成,但必须其行列数正确,恰好填满全部元素。
如键入f5=[111;
222;
333]得
f5=
111
222
333
则键入fb=[f1,f5;
f3,f2]可得
fb=
11111
11222
11333
10000
01000
(二)矩阵的初等运算
1、矩阵的加减乘法
(1)矩阵加减法
两矩阵相加(减)就是其对应元素的相加(减),通过+、-运算符实现,要求相加(减)的两个矩阵的结构必须相同。
用MATLAB的size语句来检查结构是否相同。
键入[m,n]=size(fb)得
m=
5
n=
当两个矩阵相加(减)时,如果有一个是标量,则MATLAB承认算式有效,并自动将该标量扩展成同结构的等元素矩阵,再进行加(减)运算。
键入x=[-101];
y=x-1得
y=
-2-10
对于一维矩阵(数组),可以用length语句来求其长度,它不区分列或行,只有一个输出量,而size有两个输出量,所以,作加减法的结构检验时只能用size。
(2)矩阵乘法
n×
p的矩阵A与p×
m的矩阵B的乘积C是一个n×
m的矩阵,通过运算符*实现。
p是A矩阵的列数,也是B矩阵的行数,称为这两个相乘矩阵的内阶数,这里要注意,两矩阵相乘的必要条件是它们的内阶数相等。
如果两个相乘的矩阵有一个是标量,则MATLAB不检查其内阶数,而用该标量乘以矩阵的每个元素。
若把y转置,即y’为3×
1的矩阵,而x是1×
3的矩阵,则x*y’的内阶数相等为3
键入x*y’得
ans=2
该式子称为x左乘y’。
如果使x右乘y’,则y’*x内阶数为1,
键入y’*x得
20-2
10-1
所以要注意左乘与右乘结果一般不同,只有单位矩阵例外,单位矩阵乘以任何矩阵,无论左乘还是右乘,其乘积仍等于该矩阵,但要保证单位矩阵的阶数与相乘矩阵的阶数相等。
即
eye(n)*A=A
A*eye(n)=A
2、矩阵除法及线性方程组的解
(1)线性代数中没有除法,只有逆矩阵,矩阵的除法是MATLAB从逆矩阵的概念引伸来的。
有左除和右除两种情况。
B左除矩阵D相当于矩阵B左乘矩阵D的逆矩阵,记作D\B。
左除条件是:
两矩阵的行数必须相等。
(D*X=B,X=D-1*B=D\B,可见需要D与B的行数相等)
B右除矩阵D相当于矩阵B右乘矩阵D的逆矩阵,记作B/D。
右除条件是:
两矩阵的列数必须相等。
(X*D=B,X=B*D-1=B/D,可见需要D与B的列数相等)
(2)矩阵除法可以用来方便地解线性方程组。
例如要求下列方程组的解x=[x1;
x2;
x3]。
6x1+3x2+4x3=3
-2x1+5x2+7x3=-4
8x1-4x2-3x3=-7
此方程组可以写成矩阵形式Ax=B,求解的MATLAB程序为
A=[634;
-257;
8-4-3];
B=[3;
-4;
-7];
x=A\B得
0.6000
7.0000
-5.4000
下面来看矩阵左右乘除的一些示例。
设A=[123;
456],B=[240;
135],D=[147;
852;
360],即
A=
123
456
B=
240
135
D=
147
852
360
则其乘除的结果见下表。
算式
结果
A*B
?
Errorusing==>
*
Innermatrixdimensionsmustagree.(内阶数必须相等)
A’*B
61620
92325
123030
A*B’
1022
2849
D\A
\
Matrixdimensionsmustagree.(行数必须相等)
D\A’
-0.03700
0.51851.0000
-0.14810
A/D
0.40740.07410.0000
0.74070.40740.0000
3、矩阵的乘方和幂次函数
MATLAB中只有运算符*、/、\、^和指数函数expm、对数函数logm、开方函数sqitm是把矩阵作为一个整体来运算的,其他所有的MATLAB函数都是对矩阵中的元素分别进行运算的,称为“元素群运算”,将在后面讨论。
(1)幂次运算时,指数和底数不能同时为矩阵,或者说指数和底数至少一个必须为标量;
(2)指数或底数为矩阵时,必须是方阵,以保证矩阵相乘的内阶数相等;
(3)注意:
sqrtm、expm、logm都是针对矩阵的运算,而sqrt、exp、log是针对矩阵元素的群运算,不要混淆。
下面来看一些矩阵运算的示例,其中D=[147;
360],s=[12;
34]即
s=
12
34
键入语句
输出结果
D^2
546615
546966
514233
按矩阵运算
2.^D
216128
256324
8641
按元素群运算
D^s
^
Atleastoneoperandmustbescalar.
底数和指数不能同时为矩阵
u1=sqrtm(s)
0.5537+0.4644i0.8070-0.2124i
1.2104-0.3186i1.7641+0.1458i
u1*u1=s检验
u2=sqrt(s)
1.00001.4142
1.73212.0000
u2*u2≠s,u2.*u2=s
v1=expm(s)
51.969074.7366
112.1048164.0738
logm(v1)=s
v2=exp(s)
2.71837.3891
20.085554.5982
log(v1)=s
logm(D)
1.2447-0.91702.8255
1.60442.5760-1.9132
-0.75391.13721.6724
log(D)
01.38631.9459
2.07941.60940.6931
1.09861.7918-Inf
4、矩阵结构形式的提取与变换
设矩阵A=[8160;
3571;
4922]即
8160
3571
4922
函数名
功能
语句
结果
fliplr
矩阵左右翻转
B=fliplr(A)
0618
1753
2294
flipud
矩阵上下翻转
B=flipud(A)
reshape
阶数重组(元素总数不变)
B=reshape(A,2,6)
845621
319702
tril
取矩阵的左下三角部分
B=tril(A)
8000
3500
4920
triu
取矩阵的右上三角部分
B=triu(A)
0571
0022
:
将元素按列取出排成一排
B=A(:
)’
B=834159672012
(三)元素群运算
1、数组及其赋值
数组通常是指单行或单列的矩阵。
MATLAB提供两种为等间隔数组赋值的简易方法。
(1)用两个冒号组成等增量语句,其格式为:
t=[初值:
增量:
终值]或者t=初值:
终值。
键入t=[0:
0.02:
1]或t=0:
1得
t=00.20000.40000.60000.80001.0000
键入t=[10:
-3:
-5]或t=10:
-5得
t=10741-2-5
当增量为1时,该增量可以略去不写,变成t=[初值:
终值]或t=初值:
如
键入t=1:
6或者t=[1:
6]
t=123456
(2)用linspace函数。
调用格式为:
linspace(初值,终值,点数)。
键入linspace(11010)得
ans=12345678910
即将1到10之间等分为10个点,或者说等分为9份。
2、元素群的四则运算和幂次运算
元素群运算也就是矩阵中所有元素按照单个元素进行运算。
在运算符*、/、\、^前加上一个点符号“.”,就表示做元素群运算。
参与元素群运算的两个矩阵必须是同阶的(只有标量除外,它会自动扩展为同阶矩阵参与运算)。
设X=[1,2,3];
Y=[4,5,6]
运算式
输出结果
Z=X.*Y
Z=41018
Z=X.\Y
Z=4.00002.50002.0000
Z=X.^Y
Z=132729
Z=X.^2
Z=149
Z=2.^[XY]
Z=248163264
(四)运算符
MATLAB中的数学运算符
名称
说明
+-
矩阵加,矩阵减
*
矩阵乘
/\
矩阵右除,矩阵左除
^
矩阵求幂
.*.^
群乘,群求幂
./.\
数组右除,数组左除
'
.'
共轭转置,转置
=
赋值
MATLAB中的比较和逻辑运算符
==
等于
~=
不等于
>
大于,大于等于
<
<
小于,小于等于
&
与
|
或
~
非
xor(a,b)
a和b异或
any(a)
a中有元素非零则为真
all(a)
a中所有元素都非零则为真
M文件及程序调试
一、主程序文件
1、格式及要求
(1)程序开头
最开始一般是注释行,说明程序用途、对输入数据的要求等。
注释行必须以%开始,表明是注释行而不是命令行,计算机不会处理以%开头的任何内容。
当然,在命令行后也可以%引导注释语句;
注释可以用汉字。
MATLAB规定,在键入“help文件名”时,屏幕上会将该文件中以%起头的最前面几行的内容显示出来,使用户知道如何使用。
程序命令部分以clear、closeall等语句开始,用来清除掉工作空间中原有的变量和图形,避免其他已执行的程序残留数据对本程序的影响。
CLEARremovesallvariablesfromtheworkspace.
CLOSEALLclosesalltheopenfigurewindows.
(2)程序主体
如果文件中有在子程序中与主程序共用的全局变量,应在程序的起始部分注明。
其语句是:
global变量名1变量名2…
为改善可读性,应注意流程控制语句的缩进及与end的对应关系。
程序中必须都用半角英文字母和符号(只有引号括住的部分和%号后的内容可用汉字),否则程序执行不通甚至会死机,因此一般在键入程序时,最好从头到尾用英文,在程序调试完毕后再插入汉字。
(3)文件名及文件存储
按照MATLAB标志符要求起文件名,并加上后缀m。
文件名即为MATLAB的调用命令。
文件名中不允许用汉字。
存储目录应位于MATLAB的搜索路径下。
MATLAB的搜索路径不应出现汉字路径名。
(4)程序执行
完成主程序文件编制后,在MATLAB的命令窗中键入此程序的文件名后,系统就会执行文件中的程序,主程序文件中的语句将对工作空间中的所有数据进行运算操作。
2、示例
列出求素数的程序。
素数即为只能被它自身和1除净的数。
程序如下:
%求素数(primenumber)的程序
clear,closeall%清除工作空间中原有的变量和图形
N=input(‘N=’),x=2:
N;
%列出从2到N的全部自然数
foru=2:
sqrt(N)%依次列出除数(最大到N的平方根)
n=find(rem(x,u)==0&
x~=u);
%找到能被u除净而u不等于x的数的序号
x(n)=[];
%剔除该数
end,x%循环结束,显示结果
以prime.m为名存入系统即可执行。
给出N=40,结果为
x=23571113171923293137
3、常用的人机交互命令
在执行主程序文件时,往往希望在适当的地方对程序的运行进行观察或者干预(尤其在调试程序的时候),这时就需要人机交互命令。
介绍常用的下面几条:
(1)input('
提示符’)程序执行到此处暂停,在屏幕上显示引号中的字符串。
要求用户输入数据。
如程序为X=input(‘X=’),则会在屏幕上显示X=,输入的数据将赋给X。
数据输入后,程序继续运行。
Input命令也可以接受字符,其格式为Y=input(‘提示符’,’s’),此时Y将等于输入的字符串。
(2)pause(n)程序执行到此处,暂停n秒,再继续执行。
如果没有括号参数,则等待用户键入任意键后才继续执行。
(3)echoon(off)一般情况下,M文件中的命令不会显示在屏幕上。
而在命令echoon之后,会在执行每行程序前先显示其内容。
(4)keyboard程序执行到此处暂停,在屏幕上显示字符K,并把程序的输入和执行权交给用户(键盘)。
用户可以像在普通MATLAB命令窗口中那样进行任何操作(例如,检查中间结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 基础