1 / 33

王国利

Matlab 计算与仿真技术 第四讲 : 交互式计算 -II http://human-robot.sysu.edu.cn/course. 王国利. http://sysu.edu.cn/~isswgl. 信息科学与技术学院. 中山大学. 第三讲提纲. 第三讲回顾 交互式计算 (II). 第三讲回顾. Matlab 的初识与概述 - 桌面 : 基本的工作环境 ( 命令 / 历史 / 目录 ) - 计算 : 运算操作 / 数据类型 / 联机帮助 科学计算与仿真 - 是科学认知的必要手段 - 是信息技术的必要技能 交互式计算 (I)

akio
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计算与仿真技术 第四讲: 交互式计算-II http://human-robot.sysu.edu.cn/course 王国利 http://sysu.edu.cn/~isswgl 信息科学与技术学院 中山大学

  2. 第三讲提纲 • 第三讲回顾 • 交互式计算(II)

  3. 第三讲回顾 • Matlab的初识与概述 - 桌面: 基本的工作环境(命令/历史/目录) - 计算: 运算操作/数据类型/联机帮助 • 科学计算与仿真 - 是科学认知的必要手段 - 是信息技术的必要技能 • 交互式计算(I) - 命令行信息交互 - 变量管理(命名/创建/引用)

  4. 交互式计算 (续) • 综合练习一: 找到如下矩阵中最大元素 - 提示1: 首先需要查找最大值的函数 回忆: >> lookfor max??? - 提示2: 了解如何使用这个函数 回忆: >> help/doc max???

  5. 交互式计算 (续) - 求解 >> lookfor max; % 确定函数是否存在 >> help max; % 函数使用说明 >> A=[ 1 -5 -2;… 3 4 -9;… -7 2 6]; % 创建矩阵 >> max(max(A)) % 为什么两次? ans = 6

  6. 交互式计算 (续) >> B=sin(A); % 创建矩阵 >> max(max(B)) % 求解 ans = 0.9585 - 讨论: 与 ’:’ 组合使用技巧 >>max(B(:)); % 与 max(max(B)) 等价 为什么? 提示: B(:) 将矩阵按列展开成向量

  7. 交互式计算 (续) • 综合练习二: 利用函数 sin 在 [0,Π] 上产生 长度为100的采样数据, 以表格方式存储 - 回忆:linearspace(startValue, endValue, nElements) - 提示: startValue=0, endValue=pi, nElements=100 - 求解: >> x=linespace(0,pi,100); % row vector >> y=sin(x); % row vector >> xyTable=[x’ y’]; % table form

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  32. 特别提醒 10月1日为公休日 过一个快乐的长假期! Be Good Do Right! 完成作业:57-58页/习题1-9

  33. 结束语 第四讲预告:交互式计算(III) (2007年10月8日)

More Related