王国利信息科学与技术学院中山大学
http://human-robot.sysu.edu.cn
Matlab计算与仿真技术第五讲,交互式计算 -III
Matlab计算与仿真
上機實習提示
交互式计算 -III
第五讲提纲
Matlab计算与仿真上机实习提示
上机实习提示
- 时间 /地点安排单周二,12-13节实验中心 B座 401
- 基本要求准时出席 /遵守实验室规定完成实习指南要求的任务认真做好实习报告或总结
Matlab计算与仿真交互式计算 (续 )
矩阵计算进阶
- 算术运算加减运算,相同阶数或一个为标量提示,A+b 等价于 [aij+b]
乘法运算,相容 阶数或一个为标量提示,A*b 等价于 [aij*b]
除法运算,相容阶数且除矩阵非奇异或非零标量提示,A/b 等价于 [aij/b]
注意,左右除的分别,即
A/B 不等价于 B/A
Matlab计算与仿真交互式计算 (续 )
- 非算术运算关系运算,= = > <
结果,返回布尔值矩阵条件,相同阶数或一个为标量提示,A==b 等价于 [aij==b]
逻辑运算,&/|/~/xor
以逻辑和为例,相同维数或至少一个为标量
>> C=A & B;
% cij=1 iff both aij and bij nonzeros
cij=0 otherwise
Matlab计算与仿真交互式计算 (续 )
- 矩阵函数数学函数,函数名通常以 m为结尾标志提示,矩阵函数 和 函数矩阵的差异例如,expm(X)≠exp(X)
logm(X)≠log(X)
逻辑函数相同维数或至少一个为标量
AND/OR/XOR
提示,与逻辑运算一致
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作维数查询
>> size(A);
功能,返回行列值举例,
>> A=[1:4; 5:8; 9:12]’;
>> [m,n]=size(A)
m =
4
n =
3
提示,通常与其他整形操作协作使用
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作向量长度查询
>> length(b);
功能,返回元素个数等价于
>> max(size(b))
元素个数查询
>> numel(A);
功能,返回元素个数等价于
>> prod(size(A));
>> prod([m,n]); % == m*n;
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作标量确认查询
>> isscalar(b);
功能,返回逻辑值向量确认查询
>> isvector(b);
功能,返回逻辑值空矩阵确认查询
>> isempty(A);
功能,返回逻辑值查询非零元素,>> find(A); % 返回非零元素
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作重排操作 reshape
基本格式,
>> reshape(A,m,n);
功能,按列重排举例,
>> A=[1:4; 5:8; 9:12]’;
>> B=reshape(A,2,6)
B =
1 3 5 7 9 11
2 4 6 8 10 12
提示,对二维信号处理特别有用
Matlab计算与仿真交互式计算 (续 )
- 矩阵整形操作翻转操作 fliplr(水平翻转 )/flipud(上下翻转 )/rot90(绕转 )
基本格式,
>> fliplr(A);
>> flipud(A);
>> rot90(A);
功能,按水平 /上下翻转重排,或逆时针旋转 90度举例,>> rot90(A)
>> A=[1:3; 4:6]; ans =
>> fliplr(A) >> flipud(A) 3 6
ans = ans = 2 5
3 2 1 4 5 6 1 4
6 4 5 1 2 3
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月 2日)
结束语