1 / 28

王国利

Matlab 计算与仿真技术 第五讲 : 交互式计算 -III. 王国利. http://human-robot.sysu.edu.cn. 信息科学与技术学院. 中山大学. 第五讲提纲. 上機實習提示 交互式计算 -III. 上机实习提示. 上机实习提示 - 时间 / 地点安排 单周二: 12-13 节 实验中心 B 座 401 - 基本要求 准时出席 / 遵守实验室规定 完成实习指南要求的任务 认真做好实习报告或总结. 交互式计算 ( 续 ). 矩阵计算进阶

Download Presentation

王国利

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Matlab计算与仿真技术 第五讲: 交互式计算-III 王国利 http://human-robot.sysu.edu.cn 信息科学与技术学院 中山大学

  2. 第五讲提纲 • 上機實習提示 • 交互式计算-III

  3. 上机实习提示 • 上机实习提示 - 时间/地点安排 单周二:12-13节 实验中心B座401 - 基本要求 准时出席/遵守实验室规定 完成实习指南要求的任务 认真做好实习报告或总结

  4. 交互式计算 (续) • 矩阵计算进阶 - 算术运算 加减运算: 相同阶数或一个为标量 提示: A+b 等价于[aij+b] 乘法运算: 相容阶数或一个为标量 提示: A*b 等价于[aij*b] 除法运算: 相容阶数且除矩阵非奇异或非零标量 提示: A/b 等价于[aij/b] 注意: 左右除的分别, 即 A/B 不等价于B/A

  5. 交互式计算 (续) - 非算术运算 关系运算: = = > < 结果:返回布尔值矩阵 条件: 相同阶数或一个为标量 提示: A==b 等价于[aij==b] 逻辑运算: &/|/~/xor 以逻辑和为例, 相同维数或至少一个为标量 >> C=A & B; % cij=1 iff both aij andbij nonzeros cij=0 otherwise

  6. 交互式计算 (续) - 矩阵函数 数学函数: 函数名通常以m为结尾标志 提示: 矩阵函数 和 函数矩阵的差异 例如, expm(X)≠exp(X) logm(X)≠log(X) 逻辑函数 相同维数或至少一个为标量 AND/OR/XOR 提示:与逻辑运算一致

  7. 交互式计算 (续) - 矩阵整形操作 维数查询 >> size(A); 功能: 返回行列值 举例: >> A=[1:4; 5:8; 9:12]’; >> [m,n]=size(A) m = 4 n = 3 提示: 通常与其他整形操作协作使用

  8. 交互式计算 (续) - 矩阵整形操作 向量长度查询 >> length(b); 功能: 返回元素个数 等价于 >> max(size(b)) 元素个数查询 >> numel(A); 功能: 返回元素个数 等价于 >> prod(size(A)); >> prod([m,n]); % == m*n;

  9. 交互式计算 (续) - 矩阵整形操作 标量确认查询 >> isscalar(b); 功能: 返回逻辑值 向量确认查询 >> isvector(b); 功能: 返回逻辑值 空矩阵确认查询 >> isempty(A); 功能: 返回逻辑值 查询非零元素: >> find(A); % 返回非零元素

  10. 交互式计算 (续) - 矩阵整形操作 重排操作 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 提示:对二维信号处理特别有用

  11. 交互式计算 (续) - 矩阵整形操作 翻转操作 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

  12. 交互式计算 (续) - 矩阵整形操作 拼接操作 >> 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

  13. 交互式计算 (续) - 矩阵整形操作 块提取操作: 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

  14. 交互式计算 (续) • 数据类型使用注解 - 更多的常用数据类型 复数 字符串 多项式 数组 结构 胞组 对象

  15. 交互式计算 (续) • 关于复数 - 虚数单位 内置变量: i/j(=sqrt(-1)) >> i^2 ans = -1 提示: 应尽量避免利用其自定义变量 - 内置函数 >> abs % 幅值 >> exp % 指数 >> angle % 复角 >> imag % 实部 >> conj % 共扼 >> real % 虚部

  16. 交互式计算 (续) - 使用实例 >> 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

  17. 交互式计算 (续) • 关于字符串 - 基本概念 元素为字符的矩阵 单引号方式赋值 引用方式同矩阵 - 使用实例 >> first=‘john’; >> length(name) >> last=‘coltrane’; ans = >> name=[first,’ ’,last] 13 name = john coltrane

  18. 交互式计算 (续) - 常用操作函数 转换操作 >>char 操作 功能:将整数转换成对应的ASCII码字符 另:可将两个字符串拼接 >>num2str 操作 功能:将数值矩阵转换成字符串文本 >> str2num操作 功能:将字符串文本转换成数值矩阵

  19. 交互式计算 (续) 查询操作 >> findstr 功能:查找感兴趣的子字符串 对比操作 >> strcmp 功能:比较两个字符串,返回逻辑值 >> strncmp 功能:只比较字符串的前n个字符

  20. 交互式计算 (续) >> strmatch 功能:依行进行前端匹配查询 返回前端匹配的行下标 拼接操作 >> strcat 功能:行方式拼接字符串 >> strvcat 功能:列方式拼接字符串

  21. 交互式计算 (续) 使用实例 >> 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

  22. 交互式计算 (续) >> 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

  23. 交互式计算 (续) >> 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

  24. 交互式计算 (续) • 关于多项式 - 基本概念 数学表达式 求值计算 >> c=[c1,c2,c3,…,cn,cn+1]; >> polyval(c,x)

  25. 交互式计算 (续) 卷积计算 >> w=conv(u,v) % 返回多项式系数向量 重构操作 >> c=poly(v) % 返回多项式系数向量 微分操作 >> cdef=polyder(c) 拟合操作 >> c=polyfit(x,y,n)

  26. 交互式计算 (续) 使用实例 >> 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

  27. 交互式计算 (续) >> 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

  28. 结束语 第六讲预告:Matlab编程 (2008年4月2日)

More Related