Matlab
This presentation is the property of its rightful owner.
Sponsored Links
1 / 33

王国利 PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


1730485

Matlab计算与仿真技术

第四讲: 交互式计算-II

http://human-robot.sysu.edu.cn/course

王国利

http://sysu.edu.cn/~isswgl

信息科学与技术学院

中山大学


1730485

第三讲提纲

  • 第三讲回顾

  • 交互式计算(II)


1730485

第三讲回顾

  • Matlab的初识与概述

    - 桌面: 基本的工作环境(命令/历史/目录)

    - 计算: 运算操作/数据类型/联机帮助

  • 科学计算与仿真

    - 是科学认知的必要手段

    - 是信息技术的必要技能

  • 交互式计算(I)

    - 命令行信息交互

    - 变量管理(命名/创建/引用)


1730485

交互式计算 (续)

  • 综合练习一: 找到如下矩阵中最大元素

    - 提示1: 首先需要查找最大值的函数

    回忆: >> lookfor max???

    - 提示2: 了解如何使用这个函数

    回忆: >> help/doc max???


1730485

交互式计算 (续)

- 求解

>> lookfor max; % 确定函数是否存在

>> help max; % 函数使用说明

>> A=[ 1 -5 -2;…

3 4 -9;…

-7 2 6]; % 创建矩阵

>> max(max(A)) % 为什么两次?

ans =

6


1730485

交互式计算 (续)

>> B=sin(A); % 创建矩阵

>> max(max(B)) % 求解

ans =

0.9585

- 讨论: 与 ’:’ 组合使用技巧

>>max(B(:)); % 与 max(max(B)) 等价

为什么?

提示: B(:) 将矩阵按列展开成向量


1730485

交互式计算 (续)

  • 综合练习二: 利用函数 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


1730485

交互式计算 (续)

  • 矩阵计算进阶

    - 算术运算

    加减运算: 相同阶数或一个为标量

    提示: A+b 等价于[aij+b]

    乘法运算: 相容阶数或一个为标量

    提示: A*b 等价于[aij*b]

    除法运算: 相容阶数且除矩阵非奇异或非零标量

    提示: A/b 等价于[aij/b]

    注意: 左右除的分别, 即

    A/B 不等价于B/A


1730485

交互式计算 (续)

- 非算术运算

关系运算: = = > <

结果:返回布尔值矩阵

条件: 相同阶数或一个为标量

提示: A==b 等价于[aij==b]

逻辑运算: &/|/~/xor

以逻辑和为例, 相同维数或至少一个为标量

>> C=A & B;

% cij=1 iff both aij andbij nonzeros

cij=0 otherwise


1730485

交互式计算 (续)

- 矩阵函数

数学函数: 函数名通常以m为结尾标志

提示: 矩阵函数 和 函数矩阵的差异

例如, expm(X)≠exp(X)

logm(X)≠log(X)

逻辑函数

相同维数或至少一个为标量

AND/OR/XOR

提示:与逻辑运算一致


1730485

交互式计算 (续)

- 矩阵整形操作

维数查询

>> size(A);

功能: 返回行列值

举例:

>> A=[1:4; 5:8; 9:12]’;

>> [m,n]=size(A)

m =

4

n =

3

提示: 通常与其他整形操作协作使用


1730485

交互式计算 (续)

- 矩阵整形操作

向量长度查询

>> length(b);

功能: 返回元素个数

等价于

>> max(size(b))

元素个数查询

>> numel(A);

功能: 返回元素个数

等价于

>> prod(size(A));

>> prod([m,n]); % == m*n;


1730485

交互式计算 (续)

- 矩阵整形操作

标量确认查询

>> isscalar(b);

功能: 返回逻辑值

向量确认查询

>> isvector(b);

功能: 返回逻辑值

空矩阵确认查询

>> isempty(A);

功能: 返回逻辑值

查询非零元素: >> find(A); % 返回非零元素


1730485

交互式计算 (续)

- 矩阵整形操作

重排操作 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

提示:对二维信号处理特别有用


1730485

交互式计算 (续)

- 矩阵整形操作

翻转操作 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


1730485

交互式计算 (续)

- 矩阵整形操作

拼接操作

>> 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


1730485

交互式计算 (续)

- 矩阵整形操作

块提取操作: 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


1730485

交互式计算 (续)

  • 数据类型使用注解

    - 更多的常用数据类型

    复数

    字符串

    多项式

    数组

    结构

    胞组

    对象


1730485

交互式计算 (续)

  • 关于复数

    - 虚数单位

    内置变量: i/j(=sqrt(-1))

    >> i^2

    ans =

    -1

    提示: 应尽量避免利用其自定义变量

    - 内置函数

    >> abs % 幅值 >> exp % 指数

    >> angle % 复角 >> imag % 实部

    >> conj % 共扼 >> real % 虚部


1730485

交互式计算 (续)

- 使用实例

>> 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


1730485

交互式计算 (续)

  • 关于字符串

    - 基本概念

    元素为字符的矩阵

    单引号方式赋值

    引用方式同矩阵

    - 使用实例

    >> first=‘john’; >> length(name)

    >> last=‘coltrane’; ans =

    >> name=[first,’ ’,last] 13

    name =

    john coltrane


1730485

交互式计算 (续)

- 常用操作函数

转换操作

>>char 操作

功能:将整数转换成对应的ASCII码字符

另:可将两个字符串拼接

>>num2str 操作

功能:将数值矩阵转换成字符串文本

>> str2num操作

功能:将字符串文本转换成数值矩阵


1730485

交互式计算 (续)

查询操作

>> findstr

功能:查找感兴趣的子字符串

对比操作

>> strcmp

功能:比较两个字符串,返回逻辑值

>> strncmp

功能:只比较字符串的前n个字符


1730485

交互式计算 (续)

>> strmatch

功能:依行进行前端匹配查询

返回前端匹配的行下标

拼接操作

>> strcat

功能:行方式拼接字符串

>> strvcat

功能:列方式拼接字符串


1730485

交互式计算 (续)

使用实例

>> 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


1730485

交互式计算 (续)

>> 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


1730485

交互式计算 (续)

>> 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


1730485

交互式计算 (续)

  • 关于多项式

    - 基本概念

    数学表达式

    求值计算

    >> c=[c1,c2,c3,…,cn,cn+1];

    >> polyval(c,x)


1730485

交互式计算 (续)

卷积计算

>> w=conv(u,v) % 返回多项式系数向量

重构操作

>> c=poly(v) % 返回多项式系数向量

微分操作

>> cdef=polyder(c)

拟合操作

>> c=polyfit(x,y,n)


1730485

交互式计算 (续)

使用实例

>> 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


1730485

交互式计算 (续)

>> 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


1730485

特别提醒

10月1日为公休日

过一个快乐的长假期!

Be Good Do Right!

完成作业:57-58页/习题1-9


1730485

结束语

第四讲预告:交互式计算(III)

(2007年10月8日)


  • Login