第02讲MATLAB语言基础0802.docx
《第02讲MATLAB语言基础0802.docx》由会员分享,可在线阅读,更多相关《第02讲MATLAB语言基础0802.docx(22页珍藏版)》请在冰点文库上搜索。
第02讲MATLAB语言基础0802
第二讲MATLAB语言
目录
一、MATLAB语言基础3
§2.1.1、MATLAB的数据3
1、数值表示方式3
2、数值显示格式3
3、永久变量4
§2.1.2、MATLAB的运算符4
1、算术运算符4
2、关系运算符5
3、逻辑运算符5
§2.1.3、MATLAB的函数5
1、基本函数5
2、自定义函数6
§2.1.4、MATLAB的矩阵产生6
1、矩阵的几种样式6
2、直接用数据产生矩阵6
3、利用增量产生矩阵7
4、利用函数产生矩阵7
5、利用矩阵产生矩阵7
§2.1.5、MATLAB的矩阵操作8
1、寻访矩阵中的数据8
2、修改数据8
3、插入、重排、提取、拉长、置空8
4、矩阵的规模8
二MATLAB语言应用9
§2.2.1、矩阵运算9
(1)概述9
(2)矩阵的加减法9
(3)矢量积与转置10
(4)复数的共轭与转置11
(5)矩阵的乘法11
(6)矩阵的除法13
(7)矩阵的乘幂14
(8)解线性方程15
§2.2.2、多项式运算16
(1)多项式的表示16
(2)多项式的值16
(3)多项式的根17
(4)多项式的系数17
(5)多项式的积:
18
(6)多项式的商:
18
(7)多项式的导数18
(8)多项式的曲线拟合19
§2.2.3、字符运算19
(1)字符数组19
(2)字符与数值的转换20
(3)字符串比较20
§2.2.4、符号运算21
(1)符号定义21
(2)因式分解21
(3)简化22
(4)反函数22
(5)求和23
(6)diff(f,v,n)-求导23
(7)int(f,v,a,b)-积分24
§2.2.5、Notebook操作24
【正文】
基本语句:
[变量1,变量2,...]=表达式(参数1,参数2,...)
常量3e8、[1,2;3,4]
数据变量A=[1,2,3;4,5,6]
永久变量pi、i
算术运算符+、-、*、/
表达式运算符关系运算符>、<、=
逻辑运算符&、|、~
内部函数sin、cos
函数工具箱扩展函数imread
自定义函数myf
一、MATLAB语言基础
§2.1.1、MATLAB的数据
1、数值表示方式
MATLAB环境下的数值(矩阵的元素)一般采用十进制,可以带小数点和正负号,以下数值都是合法的:
5、+10、-20.56、0.0045、-1000.、1.3e-4、100e20、-0.023e-012
ans=
5
2、数值显示格式
MATLAB内部数据运算都按双精度数据格式进行运算,不必指定数据格式。
可将运算结果显示为以下格式:
short-短整数long-长整数
shorte-8位指数longe-16位指数
shortg-显示8位longg-显示16位
hex-十六进制bank-货币格式
+-显示正负号rational-有理数格式
3、永久变量
realmin-最小浮点数
realmax-最大浮点数
eps-容差变量,定义1.0到最近浮点的距离
pi-圆周率
inf-正无穷大(1/0)
nan-非数(0/0)
i,j-虚数单位
举例1:
r=1/0,1/r(无穷大使用)
举例2:
r=0+realmin,sin(r)/r
§2.1.2、MATLAB的运算符
1、算术运算符
“+”-加,“-”-减
“*”-乘,“/”-除
“∧”-幂,“.”-点运算
MATLAB的算术运算符合通常的四则运算规则,它的计算能力及其强大。
例1:
[5+2*(7-3)]/2^3
ans=
1.6250
例2:
[(3+4i)×(5+6i)]^0.1
例3:
1/0,(-1)^-1.5,0÷0
Warning:
Dividebyzero.
ans=
Inf
复数计算:
(1)直角坐标:
z=a+bi
例:
z=2.73+5.48i
(2)极坐标:
z=r*exp(i*s)
例:
z=2*exp(i*pi/3)
(3)四个函数:
real(z)-实部,imag(z)-虚部,abs(z)-模,angle(z)-辐角
2、关系运算符
“<”-小于,“<=”-小于等于
“==”-全等于“>”-大于
“>=”-大于等于“~=”-不等于
关系运算结果仅为0和1。
例1:
a=3>=10
例2:
A=[1,2,3;4,5,6];B=4*ones(2,3)
B<=A
例3:
b=4
b<=A
3、逻辑运算符
“&”-与,“|”-或,“~”-非
逻辑运算的结果仅为0和非0
(1)。
例1:
A=[0,2,3,4;1,3,5,0]
B=[1,0,5,3;1,5,0,5]
A&B
例2:
a=1&0+1运算的优先级:
b=10-1>2|4算术运算最高
c=(a&b)|(a&b)关系运算其次
d=a&b-a<=1逻辑运算最低
§2.1.3、MATLAB的函数
1、基本函数
sin-正弦,cos-余弦,tan-正切,cot-余切
asin-反正弦,acos-反余弦,atan-反正切,acot-反余切
fix-朝零方向取整,ceil-朝正无穷大方向取整
round-四舍五入取整,floor-朝负无穷大方向取整
log10-常用对数,log-自然对数,exp-指数,sqrt-平方根
sign-符号函数,conj-复数共轭
2、自定义函数
*在命令行内建立函数:
f=inline('sin(x)+cos(x)');
计算sin(2.0)+cos(2.0):
f(2.0)
*用函数文件的方式:
建立sincos.m文件:
%这是一个简单的函数文件
%本函数用于计算sin(x)+cos(x)的值
%函数形式为:
y=sin(x)+cos(x)
functiony=sincos(x);%定义函数
y=sin(x)+cos(x);
§2.1.4、MATLAB的矩阵产生
1、矩阵的几种样式
*1×1矩阵:
代表标量a=3
*1×N矩阵:
行向量b=[1,2,3]
*N×1矩阵:
列向量c=[1;2;3]
*N×N矩阵:
方阵d=[1,2;3,4]
*M×N矩阵:
一般的矩阵e=[1,2,3;4,5,6]
2、直接用数据产生矩阵
例1:
A=[111213;212223;313233]
A=[11,12,13;21,22,23;31,32,33]
两种方法是等效的。
注意:
空格、逗号和分号
例2:
x=pi/6
B=[sin(x),cos(x);cos(x),-sin(x)]
3、利用增量产生矩阵
*[初值:
终值]-建立增量为1的行向量
例:
x=1:
10(等价于x=[1:
10])
*[初值:
增量:
终值]-按增量建立行向量
例:
x=1:
0.1:
10
x=
Columns1through9
1.00001.10001.20001.30001.40001.50001.60001.70001.8000
Columns10through18
1.90002.00002.10002.20002.30002.40002.50002.60002.7000
Columns19through27
2.80002.90003.00003.10003.20003.30003.40003.50003.6000
Columns28through36
3.70003.80003.90004.00004.10004.20004.30004.40004.5000
Columns37through45
4.60004.70004.80004.90005.00005.10005.20005.30005.4000
Columns46through54
5.50005.60005.70005.80005.90006.00006.10006.20006.3000
Columns55through63
6.40006.50006.60006.70006.80006.90007.00007.10007.2000
Columns64through72
7.30007.40007.50007.60007.70007.80007.90008.00008.1000
Columns73through81
8.20008.30008.40008.50008.60008.70008.80008.90009.0000
Columns82through90
9.10009.20009.30009.40009.50009.60009.70009.80009.9000
Column91
10.0000
*x=linspace(初值,终值,n)-创建两个数之间n个数的行向量
例:
x=linspace(0,pi,11)
x=linspace(0,1,11)*pi
4、利用函数产生矩阵
*zeros(m,n)-零矩阵zeros(5)
*ones(m,n)-1矩阵ones(5)
ans=
11111
11111
11111
11111
11111
*eye(m)-单位矩阵eye(5)
ans=
10000
01000
00100
00010
00001
*randn(m,n)-随机数矩阵randn(5)
ans=
-0.43261.1909-0.18670.11390.2944
-1.66561.18920.72581.0668-1.3362
0.1253-0.0376-0.58830.05930.7143
0.28770.32732.1832-0.09561.6236
-1.14650.1746-0.1364-0.8323-0.6918
*magic(n)-n维魔鬼矩阵magic(5)
ans=
17241815
23571416
46132022
101219213
11182529
*pascal(n)-n维pascal矩阵pascal(5)
*gallery(m,n)-一个测试矩阵gallery(5)
5、利用矩阵产生矩阵
*diag(A)-返回矩阵A对角元素成列向量
*diag(v)-以向量v作对角元素创建矩阵
*flipud(A)-矩阵上下翻转
*fliplr(A)-矩阵左右翻转
*rot90(A)-矩阵逆时针翻转90度
*tril(A)-提取矩阵A的下三角矩阵
*triu(A)-提取矩阵A的上三角矩阵
§2.1.5、MATLAB的矩阵操作
1、寻访矩阵中的数据
x=[12345]%产生1×5的数组
b=x(3)%寻访数组x的第3个元素
b=x([125])%寻访x的第1、2、5元素
b=x(1:
3)%寻访前三个元素
b=x(3:
end)%寻访第三个元素到最后一个
b=x(find(x>3))%由大于3的元素构成数组
b=x(3:
-1:
1)%由前3个数到排成数组
b=x([12344321])
%对元素的重复访问
2、修改数据
x=[1,2,3;4,5,6;7,8,9]%产生3×3的矩阵
b=x(find(x>4))%大于4的元素构成数组
x(2,2)=10%2行2列值改为10
x(3,:
)=20%第3行的值改为20
x=ones(5)%产生5×5全为1的矩阵
x(2:
4,2:
4)=0%第2、3、4行的
第2、3、4列元素改0
3、插入、重排、提取、拉长、置空
插入:
x=4:
6;A=[x-3;x;x+3]%插入创建新矩阵
重排:
B=A(3:
-1;1;1:
3)%以逆序重排行
提取:
C=A(1:
2;2:
3)%A的部分
拉长:
D=A(:
)%拉长成列
置空:
B(:
2)=[]%删除B的第二列
4、矩阵的规模
A=[3:
6;1:
4]%产生2×4的矩阵
s=size(A)%返回s为[行数列数]
[r,c]=size(A)%返回r为行数,c为列数
r=size(A,1)%只返回行数
c=size(A,2)%只返回列数
n=length(A)%返回行数、列数最大者
二MATLAB语言应用
§2.2.1、矩阵运算
(1)概述
矩阵与数组在数据形式上是一致的,但在运算上是有区别的。
Matlab的线性工具箱在目录matfun中。
几个常用的函数:
norm-矩阵的范数
rank-矩阵的秩
det-方阵的行列式的值
inv-逆矩阵
(2)矩阵的加减法
大小相等的矩阵才能加减:
【例】
A=pascal(3)
B=magic(3)
C=A+B
D=A-B
A=
111
123
136
B=
816
357
492
C=
927
4710
5128
D=
-70-5
-2-3-4
-3-64
(3)矢量积与转置
【例】
A=[1,2,3]%行向量
B=[3;5;9]%列向量
C=A*B%点积
D=B*A%叉积
E=D'%D的转置
A=
123
B=
3
5
9
C=
40
D=
369
51015
91827
E=
359
61018
91527
(4)复数的共轭与转置
若A为复数矩阵,则A'表示A的共轭,A.'表示转置。
【例】
A=[3+2i,5+3i;2+8i,9+5i]
B=A'%表示共轭
B=A.'%表示转置
(5)矩阵的乘法
【例】
A=[1,2,3;3,5,6;2,3,1]%定义两个3×3的矩阵
B=[5,2,8;9,6,3;2,5,6]
C=A*B%矩阵的乘积:
(C≠D)
D=B*A
E=A.*B%数组的相乘:
(E=F)
F=B.*A
(6)矩阵的除法
【例】
A=[1,2,3;3,5,6;2,3,1]%定义两个3×3的矩阵
B=[5,2,8;9,6,3;2,5,6]
C=A/B%矩阵的除法
D=A*B^(-1)
E=A*inv(B)
F=A./B%数组的除法
(7)矩阵的乘幂
A=[1,2,3;3,5,6;2,3,1]%定义1个3×3的矩阵
C=A^3%矩阵的乘幂
D=A*A*A
E=A^(-0.1)
F=A.^3%数组的乘幂
(8)解线性方程
若:
AX=B-解为X=B\A;
若:
XA=B-解为X=B/A。
【例】
A=[234;541;132]
B=[1;2;3]
X=A\B
【例】
A=[234;541;132]
%B=[475;147;526]
B=2*A
X=A\B
§2.2.2、多项式运算
(1)多项式的表示
对于多项式:
,可以表示为:
p=[10-2-5]
(2)多项式的值
【例】
p=[10-2-5]
polyval(p,5)%代表x=5时p的值
A=[94;68;27]
polyval(p,A)%返回一个矩阵
(3)多项式的根
【例】
p=[10-2-5]
r=roots(p)%返回所有根的列向量
(4)多项式的系数
【例】
p=[10-2-5]
r=roots(p);
q=poly(r)%返回的q与p相同,两者运算互逆
(5)多项式的积:
a=[123]%表示:
b=[456]%表示:
c=conv(a,b)%表示多项式的乘积
(6)多项式的商:
【例】
a=[123];b=[456];c=conv(a,b)
[q,r]=deconv(c,b)%c-被除数,b-除数,q-商,r-余数
(7)多项式的导数
p=[1234]%
k=polyder(p)%
p=
1234
k=
343
(8)多项式的曲线拟合
用p=polyfit(x,y,n)函数进行最小二乘法拟合,n为返回多项式的次数。
【例】
x=[12345];
y=[5.543.1128290.7498.4];
p=polyfit(x,y,1)
x2=1:
0.1:
5;y2=polyval(p,x2);
plot(x,y,'o',x2,y2);gridon
p=
Column1
123.3400
Column2
-176.8800
§2.2.3、字符运算
(1)字符数组
字符数组就是字符串。
【例】
name=['zhangweiping';'ksjfksdjfskd']%创建了一个14个字符的数组
name(3)%返回a
n1=name(end:
-1:
1)
name=
zhangweiping
ans=
a
n1=
gnipiewgnahz
(2)字符与数值的转换
【例】
name='zhangweiping';
name1=double(name)%字符转换为数值
name2=char(name1)%数值转换为字符
name1=
Columns1through7
1221049711010332119
Columns8through14
10110532112105110103
name2=
zhangweiping
(3)字符串比较
格式:
strncmp(s1,s2,n)-比较两串前n位字符
【例】
strcmp('hello','help')
strncmp('hello','help',3)
ans=
0
ans=
1
§2.2.4、符号运算
(1)符号定义
【例】
y=sym('2*sin(x)*cos(x)')
y=simple(y)
y=
2*sin(x)*cos(x)
y=
sin(2*x)
【例】
symsfai1fai2;
y=sym('sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)')
y=simple(y)
y=
sin(fai1)*cos(fai2)-cos(fai1)*sin(fai2)
y=
sin(fai1-fai2)
(2)因式分解
【例】
symsx;
f=x^4-5*x^3+5*x^2+5*x-6
factor(f)
f=
x^4-5*x^3+5*x^2+5*x-6
ans=
(x-1)*(x-2)*(x-3)*(x+1)
【例】
factor(1025)
ans=
5541
(3)简化
【例】化简:
symsx;
f=(1/x^3+6/x^2+12/x+8)^(1/3)
g1=simple(f)
g2=simple(g1)
f=
(1/x^3+6/x^2+12/x+8)^(1/3)
g1=
(2*x+1)/x
g2=
2+1/x
【例】化简
symsx;
f=cos(x)+(-sin(x)*sin(x))^(1/2)
g1=simple(f)
g2=simple(g1)
(4)反函数
【例】求f=x^2的反函数
symsx;
f=x^2
g=finverse(f)
(5)求和
【例】求
symsk;
f=1/(2*k-1)^2-(-1)^k/k
s=simple(symsum(f,1,inf))
(6)diff(f,v,n)-求导
symsx;
f=cos(x)+(-sin(x)*sin(x))^(1/2)
df1=diff(f,x,1)
df1=simple(df1)
df1=simple(df1)
(7)int(f,v,a,b)-积分
§2.2.5、Notebook操作
Matlab与Word的连接
安装:
notebook-setup