第二章基本语法.docx
《第二章基本语法.docx》由会员分享,可在线阅读,更多相关《第二章基本语法.docx(41页珍藏版)》请在冰点文库上搜索。
![第二章基本语法.docx](https://file1.bingdoc.com/fileroot1/2023-6/4/c261faee-9ca2-4b5a-a753-4ed9a0c74d71/c261faee-9ca2-4b5a-a753-4ed9a0c74d711.gif)
第二章基本语法
第二章基本语法
2.1.2
矩阵及其元素的赋值
赋值语句的一般形式变量=表达式(或数)
(1)元素为数
a=[123;456;789]
a=
123
456
789
(1)元素为表达式
x=[-1.3sqrt(3)(1+2+3)/5*4]
x=
-1.30001.73214.8000
(3)向量,数组中的元素用下标表示“(。
。
。
)”
>>x(5)=abs(x
(1))
x=
-1.30001.73214.800001.3000
(4)注意如果赋值元素的下标超过了原来矩阵的大小,矩阵的行列会自动扩展
a(4,3)=5.6
a=
1.00002.00003.0000
4.00005.00006.0000
7.00008.00009.0000
005.6000
(5)全行赋值
>>a(5,:
)=[543]
a=
1.00002.00003.0000
4.00005.00006.0000
7.00008.00009.0000
005.6000
5.00004.00003.0000
(6)把a的第2,4行及1,3列交点上的元素取出,构成一个新的矩阵b
>>b=a([2,4],[1,3])
b=
4.00006.0000
05.6000
(7)抽去a中的第2,4,5行
>>a([2,4,5],:
)=[]
a=
123
789
2.1.3
复数的赋值
1.对复数矩阵有两种赋值方法
(1)将元素逐个赋予复数
>>z=[1+2i3+4i;5+6i7+8i]
z=
1.0000+2.0000i3.0000+4.0000i
5.0000+6.0000i7.0000+8.0000i
(2)将实部虚部分开赋值
>>z=[1,3;5,7]+[2,4;6,8]*i
z=
1.0000+2.0000i3.0000+4.0000i
5.0000+6.0000i7.0000+8.0000i
2.若i和j在以前已经使用过则可以使用以下语句
Cleari,j
3.MATLAB中所有的运算符和函数对复数都有效
4.复数的共轭转置,共轭,转置
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
5.Inf无穷大,NaN(notanumber)非数字
>>1/0
Warning:
Dividebyzero.
ans=
Inf
>>0/0
Warning:
Dividebyzero.
ans=
NaN
2.1.5基本赋值矩阵
(1)基本矩阵
>>f1=ones(3,2),f2=zeros(2,3),f3=magic(3),f4=eye
(2)
%其中magic矩阵每列及对角线上的元素之和等于(n^3+n)/2
f1=
11
11
11
f2=
000
000
f3=
816
357
492
f4=
10
01
(2)线性分割函数linespace(a,b,n)在a,b之间均匀的产生n个点值,构成n维向量。
>>f5=linspace(0,1,5)
f5=
00.25000.50000.75001.0000
(3)有小矩阵构成大矩阵
>>fb1=[f1,f3;f4,f2]
fb1=
11816
11357
11492
10000
01000
2.2矩阵的初等运算
(1)检查矩阵的阶数
>>[m,n]=size(fb2)
m=
6
n=
5
(2)数组的长度
>>X=[-101];
>>Y=X-1
Y=
-2-10
>>l=length(X)
l=
3
矩阵的乘法:
C(i,j)=A(i,1)B(1,j)+A(i,2)B(2,j)+A(i,3)B(3,j)+A(i,4)B(4,j)+…..
>>A=[123;456],B=[240;135],D=[147;852;360]
A=
123
456
B=
240
135
D=
147
852
360
>>A*B
?
?
?
Errorusing==>mtimes
Innermatrixdimensionsmustagree.
>>A'*B
ans=
61620
92325
123030
>>A*B'
ans=
1022
2849
>>D\A
?
?
?
Errorusing==>mldivide
Matrixdimensionsmustagree.
>>D\A'
ans=
-0.03700
0.51851.0000
-0.14810
>>A/D
ans=
0.40740.07410.0000
0.74070.40740.0000
2.2.3矩阵的乘方和幂次函数
>>D=[147;852;360]
D=
147
852
360
>>s=[12;34]
s=
12
34
>>D^2
ans=
546615
546966
514233
>>2^D
ans=
1.0e+003*
1.7211-0.0000i1.9720+0.0000i1.2886+0.0000i
2.2657-0.0000i2.5958+0.0000i1.6960+0.0000i
1.5113+0.0000i1.7316+0.0000i1.1313+0.0000i
>>D^s
?
?
?
Errorusing==>mpower
Atleastoneoperandmustbescalar.
>>2.^D
ans=
216128
256324
8641
>>u1=sqrtm(s)
u1=
0.5537+0.4644i0.8070-0.2124i
1.2104-0.3186i1.7641+0.1458i
>>u2=sqrt(s)
u2=
1.00001.4142
1.73212.0000
>>v1=expm(s)
v1=
51.969074.7366
112.1048164.0738
>>v2=exp(s)
v2=
2.71837.3891
20.085554.5982
>>logm(s)
Warning:
PrincipalmatrixlogarithmisnotdefinedforAwith
nonpositiverealeigenvalues.Anon-principalmatrix
logarithmisreturned.
>Infunmat153
Inlogmat27
ans=
-0.3504+2.3911i0.9294-1.0938i
1.3940-1.6406i1.0436+0.7505i
>>logm(D)
ans=
1.2447-0.91702.8255
1.60442.5760-1.9132
-0.75391.13721.6724
>>log(D)
Warning:
Logofzero.
ans=
01.38631.9459
2.07941.60940.6931
1.09861.7918-Inf
2.2.4矩阵结构形式的提取和变换
>>A=[8160;3571;4922]
A=
8160
3571
4922
>>B=fliplr(A)矩阵左右反转
B=
0618
1753
2294
>>B=flipud(r)
?
?
?
Undefinedfunctionorvariable'r'.
>>B=flipud(A)矩阵上下翻转
B=
4922
3571
8160
>>B=reshape(A)
?
?
?
Errorusing==>reshape
Notenoughinputarguments.
>>B=reshape(A,2,6)阶数重组
B=
845621
319702
>>B=bot90(A)
?
?
?
Undefinedcommand/function'bot90'.
>>B=rot90(A)矩阵逆时针旋转90度
B=
012
672
159
834
>>B=diag(A)提取对角阵
B=
8
5
2
>>B=tril(A)取矩阵的左下角部分
B=
8000
3500
4920
>>B=triu(A)取矩阵的右下角部分
B=
8160
0571
0022
>>B=A(:
)将元素按列取出排成一列
B=
8
3
4
1
5
9
6
7
2
0
1
2
2.3元素群运算
MATLAB的所有运算都是针对矩阵来讲的,而如果要研究矩阵中的元素间的运算则要用到元素群的概念。
2.3.1数组及其赋值
1.等间距数组赋值的方法
(1)t=[初值:
增量:
终值]
>>t=[0:
0.2:
1]
t=
00.20000.40000.60000.80001.0000
>>t=[10:
-3:
-5]
t=
10741-2-5
当增量为1时,增量值可以略去
>>k=1:
6
k=
123456
(2)用linspace函数
Linspace(初值.终值.点数)
>>theta=linspace(0,2*pi,9)
theta=
00.78541.57082.35623.14163.92704.71245.49786.2832
>>theta=logspace(0,2*pi,9)
theta=
1.0e+006*
0.00000.00000.00000.00020.00140.00850.05160.31461.9195
2.3.2元素群的运算
为了与矩阵作为整体运算符号相区别,要在运算符号前加“.”
>>X=[123],Y=[456]
X=
123
Y=
456
>>Z=X.*Y
Z=
41018
>>Z=X./Y
Z=
0.25000.40000.5000
>>Z=X.^Y
Z=
132729
>>Z=X.^2
Z=
149
>>Z=2.^[XY]
Z=
248163264
2.3.3元素群函数
分为三角函数,指数函数,复数,取整函数三部分
(1)>>X=[0:
0.1:
pi/4]';[X,sin(X),cos(X),tan(X)]
ans=
001.00000
0.10000.09980.99500.1003
0.20000.19870.98010.2027
0.30000.29550.95530.3093
0.40000.38940.92110.4228
0.50000.47940.87760.5463
0.60000.56460.82530.6841
0.70000.64420.76480.8423
(2)Disp命令为显示,一般要带引号,原样输出
>>disp([X,sin(X),cos(X),tan(X)])
001.00000
0.10000.09980.99500.1003
0.20000.19870.98010.2027
0.30000.29550.95530.3093
0.40000.38940.92110.4228
0.50000.47940.87760.5463
0.60000.56460.82530.6841
0.70000.64420.76480.8423
>>disp('MATLAB赖旬阳')
MATLAB赖旬阳
2.4逻辑判断及流程控制
2.4.1关系运算
关系运算的结果只有两种结果0,1
>>a=2+2==4
a=
1
>>A=magic(6)
A=
3516261924
3327212325
3192222720
82833171015
30534121416
43629131811
>>p=(rem(A,3)==0)
1.Rem函数表示a整除b,求余数
p=
001001
100100
010010
001001
100100
010010
2.找出不为0的序号
>>lp=find(p)'
lp=
259121316202327303134
3.>>any(p)any()只要有一个为1则结果为1,按列运算
ans=
111111
4.>>all(p)all()只要全部为1则结果为1,按列运算
ans=
000000
2.4.3流程控制语句
MATLAB有4种控制语句
1.if语句
(1)if(表达式)语句组A,end
(2)if(表达式1)语句组A,else语句组B,end
(3)if(表达式1)语句组A,elseif(表达式2),语句组B,else语句组C,end
>>%输入数n,判断其奇偶性
>>n=input('n='),ifrem(n,2)==0A='even',elseA='odd',end
n=12345
n=
12345
A=
Odd
>>%输入数n,判断其奇偶性
n=input('n='),ifrem(n,2)==0A='even',elseA='odd',end
n=
n=
[]
A=
Odd
2.while语句
while(表达式)语句组A,end
>>x=1;whilex~=inf,x1=x;x=2*x;end,x1MATLAB中的最大数
x1=
8.9885e+307
>>y=1;while1+y>1,y1=y;y=y/2;end,y1MATLAB中的最小数
y1=
2.2204e-016
3.for语句
Fork=初值:
增量:
终值语句组A,end
>>forx=0:
0.1:
pi/4disp([x,sin(x),cos(x),tan(x)]),end
0010
0.10000.09980.99500.1003
0.20000.19870.98010.2027
0.30000.29550.95530.3093
0.40000.38940.92110.4228
0.50000.47940.87760.5463
0.60000.56460.82530.6841
>>n=input('n='),formatrat;fori=1:
n,forj=1:
n,h(i,j)=1/(i+j-1);end,end,h
n=5
n=
5
h=
11/21/31/41/5
1/21/31/41/51/6
1/31/41/51/61/7
1/41/51/61/71/8
1/51/61/71/81/9
4.switch语句
多分支语句,switch表达式(标量或字符串)
Case值1语句组A
Case值2语句组B
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
。
Otherwise
语句组N
End
2.5基本绘图方法
2.5.1直角坐标中的两维曲线
(1)plot(y):
输入一个数组的情况
>>y=5*(rand(1,10)-.5)
y=
2.2506-1.34430.5342-0.07011.95651.3105-0.2177-2.40751.6070-0.2765
>>plot(y)
>>title('myfirstplot')
xlabel('x'),ylabel('y')
grid
3.plot(x,y)输入两个数组的情况
>>t=0:
0.5:
4*pi
t=
Columns1through12
00.50001.00001.50002.00002.50003.00003.50004.00004.50005.00005.5000
Columns13through24
6.00006.50007.00007.50008.00008.50009.00009.500010.000010.500011.000011.5000
Columns25through26
12.000012.5000
>>y=exp(-0.1*t).*sin(t),plot(t,y)
y=exp(-0.1*t).*sin(t),plot(t,y,'r-.')
2.5.3多条曲线的画法
1.用plot(t,[y1,y2,…])命令
不便于用户自己设置线型和颜色
y1=exp(-0.1*t).*sin(t+1),plot(t,y1)
plot(t,[y;y1])
2.用hold命令
在画完前一张图后用hold命令保持住,在画下一条
4.在plot后使用多个输入变量
Plot(x1,y1,x2,y2,…,xn,yn)
>>t2=0:
.2:
2*pi;y2=exp(-0.5*t2).*sin(5*t2+1);plot(t2,y2)
>>plot(t,y,'+g',t2,y2,':
r');title('线型,点型,颜色');xlabel('时间');ylabel('Y')
4用plotyy命令
>>y3=5*y2;plotyy(t,y,t2,y3)
>>grid
>>gtext('t,t2'),gtext('y'),gtext('y3')
Gtext命令用鼠标拖动来确定标注文字的位置,用起来比较方便
2.5.4屏幕控制和其他二维绘图
1.图形屏幕控制命令
通用图形函数(graphics)(h)分为以下几部分
图形窗的控制,轴系的控制,图形对象,图形句柄操作,工具,杂项
Figure
Clf清除当前图形窗中的内容
Hold保持当前的内容,holdoff
Close关闭当前图形窗
Closeall关闭所有图形窗
Subplot(n,m,p)命令,将图形窗口分成n×m个子图,在第p个子图绘制图形
2.其他二维绘图命令
Stem绘制脉冲
Stairs绘制阶梯图
Bar绘制条形图
Errorbar绘制误差条形图
Hist会直方图
Fill(t,y,‘颜色标识符’)
subplot(2,2,1),stem(t,y)
title('stem(t,y)'),pause
subplot(2,2,2),stairs(t,y)
title('stairs(t,y)'),pause
subplot(2,2,3),bar(t,y)
title('bar(t,y)'),pause
subplot(2,2,34),fill(t,y,'r')
subplot(2,2,4),fill(t,y,'r')
title('fill(t,y,''r'')')
二维图形函数库(graph2d)(p)
基本X,Y图形,坐标控制,图形注释,
3.虚数的绘图
MATLAB通常将实部作为X坐标,虚部作为Y坐标,即相当于plot(real(z),imag(z))
Polar(theta,rth)极坐标绘图
Semilogx半对数
>>figure
(2)
>>z=exp((-0.1+i)*t);subplot(2,2,1);plot(z),pause
>>title('复数绘图plot(z)')
>>subplot(2,2,2);plot(t,z),pause
Warning:
ImaginarypartsofcomplexXand/orYargumentsignored.
>>title('复数绘图plot(t,z)')
>>subplot(2,2,3);polar(angle(z),abs(z))
>>title('polar(angle(z),abs(z))')
>>subplot(2,2,4),semilogx(t,z)
Warning:
ImaginarypartsofcomplexXand/orYargumentsignored.
>>title('semilogx(t,z)')
5.坐标比例和尺寸的设置-------axis命令
Axis(V)
V=[xmin,xmax,ymin,ymax]
Axis(‘square’)
Axis(‘equal’)横纵坐标比例尺相同
2.5.5三维曲线和曲面
1.空间曲线绘制---plot3
Plot3(x,y,z,’s’),s为线型颜色符号
>>z=0:
0.1:
4*pi;x=cos(z);y=sin(z);plot3(x,y,z)
2.空间曲面的绘制
函数mesh和surf用来绘制三维曲面
Meshc三维曲面与等高线组合图
Meshz带帘的三维曲面
>>x