王国利信息科学与技术学院中山大学
http://human-robot.sysu.edu.cn
Matlab计算与仿真技术第六讲,交互式计算 -IV
Matlab计算与仿真
综合联系
交互式计算 -IV
第六讲提纲
Matlab计算与仿真
综合练习三,基于函数 eye创建矩阵
- 提示 1,借助矩阵翻转操作回忆,>> lookfor flip
- 提示 2,矩阵的算术运算回忆,>> A*c; %=[aij*c]
综合练习
0 0 2
0 2 0
2 0 0



Matlab计算与仿真综合练习 (续 )
- 提示 3,矩阵左右翻转函数回忆,>> fliplr(A); % 列指标逆序矩阵
- 求解
>> Tem=fliplr(eye(3)); % 单位阵的左右翻转
>> (-2)*Tem %
ans =
0 0 -2
0 -2 0
-2 0 0
>> flipud(A)
Matlab计算与仿真综合练习 (续 )
综合练习四,求解下述线性方程组
- 求解,
>> A=[2 1 -5 1; 1 -3 0 -6;…
0 2 -1 2; 1 4 -7 6];
>> b=[8; 9; -5; 0]
>> x=b’/A % x=A\b
1 2 3 4
1 2 4
2 3 4
1 2 3 4
2 5 8
3 6 9
2 2 5
4 7 6 0
x x x x
x x x
x x x
x x x x




Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作拼接操作
>> cat(dim,A1,A2,…);
>> blkdiag(A1,A2,…);
功能,按行或列拼接矩阵,或按对角块方式组织特别地
>> cat(1,A,B); % == [A;B]
>> cat(2,A,B); % == [A,B]
举例,>> cat(2,A’,B’)
>> A=[1:4]; B=[5:8]; ans=
>> cat(1,A,B) 1 5
ans = 2 6
1 2 3 4 3 7
5 6 7 8 4 8
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作块提取操作,diag(对角元素 )/tril(下三角 )/triu(上三角 )
基本格式,
>> diag(A); % 返回对角向量
>> tril(A); % 上三角元素清零
>> triu(A); % 下三角元素清零功能,提取对角块 /下三角 /上三角块举例,>> triu(A)
>> A=[1:3; 4:6]; ans =
>> diag(A) >> tril(A) 1 2 3
ans = ans = 0 5 6
1 1 0 0
5 4 5 0
Matlab计算与仿真交互式计算 (续 )
数据类型使用注解
- 更多的常用数据类型复数字符串多项式数组结构胞组对象
Matlab计算与仿真交互式计算 (续 )
关于复数
- 虚数单位内置变量,i/j (=sqrt(-1))
>> i^2
ans =
-1
提示,应尽量避免利用其自定义变量
- 内置函数
>> abs % 幅值 >> exp % 指数
>> angle % 复角 >> imag % 实部
>> conj % 共扼 >> real % 虚部
Matlab计算与仿真交互式计算 (续 )
- 使用实例
>> zeta=5; theta=pi/3; % 幅值和复角
>> z=zeta*exp(i*theta)
z =
2.5000+4.3301i
>> abs(z) >> real(z)
ans = ans =
5.0000 2.5000
>> angle(z)*108/pi >> imag(z)
ans = ans =
60.0000 4.3301
Matlab计算与仿真交互式计算 (续 )
关于字符串
- 基本概念元素为字符的矩阵单引号方式赋值引用方式同矩阵
- 使用实例
>> first=‘john’; >> length(name)
>> last=‘coltrane’; ans =
>> name=[first,’ ’,last] 13
name =
john coltrane
Matlab计算与仿真交互式计算 (续 )
- 常用操作函数转换操作
>> char 操作功能:将整数转换成对应的 ASCII码字符另:可将两个字符串拼接
>> num2str 操作功能:将数值矩阵转换成字符串文本
>> str2num 操作功能:将字符串文本转换成数值矩阵
Matlab计算与仿真交互式计算 (续 )
查询操作
>> findstr
功能:查找感兴趣的子字符串对比操作
>> strcmp
功能:比较两个字符串,返回逻辑值
>> strncmp
功能:只比较字符串的前 n个字符
Matlab计算与仿真
>> strmatch
功能:依行进行前端匹配查询返回前端匹配的行下标拼接操作
>> strcat
功能:行方式拼接字符串
>> strvcat
功能:列方式拼接字符串交互式计算 (续 )
Matlab计算与仿真使用实例
>> msg1=[‘there are’,num2str(100/2.45),…
‘inch in meter’]
msg1 =
there are 39.3701 inch in meter
>> msg2=sprintf(‘there are %5.2f cubic …
inches in a liter’,…
1000/2.54^3)
msg2 =
there are 61.02 inches in a liter
交互式计算 (续 )
Matlab计算与仿真
>> both=strvcat(msg1,msg2)
both =
there are 39.3701 inch in meter
there are 61.02 inches in a liter
>> strcmp(msg1,msg2)
ans =
0
>> strncmp(msg1,msg2,9)
ans =
1
交互式计算 (续 )
Matlab计算与仿真
>> findstr(‘in’,msg1)
aus =
19 26
>> i=strmatch(‘max’,strvcat(‘max’,…
'minimax','maximum'))
ans =
1
3
>> char([77,65,84,76,65,66])
ans =
MATLAB
交互式计算 (续 )
Matlab计算与仿真交互式计算 (续 )
关于多项式
- 基本概念数学表达式求值计算
>> c=[c1,c2,c3,…,cn,cn+1];
>> polyval(c,x)
11 2 1() nn nnp x c x c x c x c
Matlab计算与仿真交互式计算 (续 )
卷积计算
>> w=conv(u,v) % 返回多项式系数向量重构操作
>> c=poly(v) % 返回多项式系数向量微分操作
>> cdef=polyder(c)
拟合操作
>> c=polyfit(x,y,n)
( ) ( ) ( 1 )
j
w k u j v k j
Matlab计算与仿真使用实例
>> c = [3 2 1];
>> polyval(c,[5 7 9])
ans =
85 162 262
>> x = (0,0.1,2.5)'; y = erf(x);
>> c = polyfit(x,y,6)
c =
0.0084 -0.0983 0.4217 -0.7435
0.1471 1.1064 0.0004
交互式计算 (续 )
2
0
2e r f ( ) dx tx e t

Matlab计算与仿真
>> d=conv(c,[5 7 9])
ans =
15 31 46 25 9
>> dd=polyder(d)
dd =
60 93 92 25
>> poly(roots(dd))
ans =
1.0000 1.5500 1.5333
0.4167
交互式计算 (续 )
Matlab计算与仿真第七讲预告,Matlab编程
( 2008年 4月 9日)
结束语