文档库 最新最全的文档下载
当前位置:文档库 › matlab第五讲教案(最新整理)

matlab第五讲教案(最新整理)

matlab第五讲教案(最新整理)
matlab第五讲教案(最新整理)

西南科技大学本科生课程备课教案

计算机技术在安全工程中的应用

——Matlab 入门及应用

授课教师:徐中慧

班级:

专业:安全技术及工程

第四章

课型:新授课

教具:多媒体教学设备,matlab 教学软件

一、目标与要求

掌握矩阵与数组的相关运算,及matlab 中矩阵运算的相关函数,包括三角分解、正交变换、奇异值分解、特征值分解、矩阵的秩的运算等。

二、教学重点与难点

本堂课教学的重点在于引导学生在编写matlab 程序时能够熟练运用矩阵运算的相关函数实现相应的

功能。

三、教学方法

本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。

四、教学内容

一、课后习题的解说。

(1)在计算器发明(约1974 年)之前,人们需要用数学用表来计算正弦、余弦和对数值。创建正弦值数学用表的步骤如下:

①创建角度矢量、范围在 0~3600之间,步长为 180。

②计算正弦值,用角度和计算出来的正弦值创建表格。

③分别用两个 disp 语句给表格加上标题和表头。

④用 fprintf 显示数据,要求小数点后有两位有效数字。

解:angle=0:18:360; sine=sin(angle/180*pi);

disp(' SINE TABLE ')

disp(' Angle Sine ')

fprintf(' %4.2f %4.2e\n',[angle;sine])

(2)使用搜索引擎或浏览器搜索英镑、日元、欧元和人民币对美元的汇率,并把输出结果绘制成表。要求用 disp 在表格中添加标题和表头,用 fprintf 输出格式化数据。

①创建日元和美元的汇率表,表中共有 25 行,从 5 日元开始,步长为 5 日元

②创建人民币和美元的汇率表,表中共有 30 行,从 5 元开始,步长为 5 元

③创建数据表格,表中有 5 列,第一列是美元,第二列是欧元,第三列是英镑,第四列是人民币,第五列是日元。计算与 1 到 10 美元等价的其它货币值。(将结果输出到.txt 文件中,此步骤属选做)

解:①jpy=5:5:25*5;

usd1=jpy*0.01301;

disp('JPY &USD TABLE')

disp('JPY USD')

fprintf(' %4.2f %4.2f\n',[jpy;usd1])

a a

')

fprintf('

%4.2f

%4.2f\n',[cny;usd2])

③usd=1:1:10;

eur=usd* 0.7323;

gbp=usd* 0.6405; cny=usd* 6.3816;

jpy=usd*76.358;

disp(' AS Exch') disp(' USD EUR GBP RMB JPY')

fprintf('

%4.2f

%4.2f

%4.2f

%4.2f

%4.2f \n',[ usd;eur;gbp;cny;jpy])

二、矩阵的相关知识

掌握矩阵与数组的相关运算,及 matlab 中矩阵运算的相关函数,包括三角分解、正交变换、奇异值分解、特征值分解、矩阵的秩的运算等。

(1) 矩阵的定义

由 m×n 个数 a ij (i=1,2,…,m;j=1,2,…n )排成的 m 行 n 列的数表

?a 11 ? 21 a 12 a 22

a 1n ?

? 2n A = ? ? ? ? ? ? ??a 31 称为 m 行 n 列的矩阵,简称 m×n 矩阵。

(2) 相关概念

a 32 a 3n ??

①行数与列数都等于 n 的矩阵称为 n 阶矩阵或 n 阶方阵。 ②只有一行的矩阵

A = (a 1 a 2 a n )

称为行矩阵,又称行向量。 ③只有一列的矩阵

? a 1 ? a ? B = 2 ?

? a ? ? n ?

④两个矩阵行数相等,列数也相等,就称为它们是同型矩阵 ⑤元素都是 0 的矩阵称为零矩阵

⑥设 A,B 均为 n×n 矩阵,I 为 n 阶单位矩阵。若 AB=I,则 B 为 A 的逆矩阵。A 也是 B 的逆矩阵。 ⑦若矩阵 A 无逆矩阵,则称 A 为奇异矩阵。若 A 有逆矩阵,则称 A 是非奇异矩阵,简称非异阵。即非奇异矩阵就是可逆矩阵

②cny=5:5:30*5;

usd2= cny *0.1567;

disp('

CNY &USD TABLE disp('

RMB USD

')

三、Matlab 中矩阵的创建

(1)M A T L A B中矩阵创建的规则

a、矩阵元素必须在”[ ]”内;

b、矩阵的同行元素之间用空格(或”,”)隔开;

c、矩阵的行与行之间用”;”(或回车符)隔开;

d、矩阵的元素可以是数值、变量、表达式或函数;

e、矩阵的尺寸不必预先定义。

(2)矩阵的创建方法

①、直接输入法

a.最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。矩阵用方括号括起来,元素之间用空格或

逗号分隔开,矩阵行与行之间用分号分开。

b.在 workspace 中单击右键定义一个新的变量,双击变量名在 variable editor 中输入矩阵元素。

c.

建立向量的时候可以利用冒号表达式,冒号表达式可以产生一个行向量,一般格式是: e1:e2:e3,

其中 e1 为初始值,e2 为步长,e3 为终止值。

d.还可以用 linspace 函数产生行向量,其调用格式为:linspace(a,b,n) ,其中 a 和b 是生成向量的

第一个和最后一个元素,n 是元素总数。可以看出来 linspace(a,b,n)与a:(b-a)/(n-1):b 等价。

e.用命令 logspace 可以创建一个等比数组,需要三个输入值。前两个数值分别作为 10 的指数,最后一

个值是数组中元素的个数。

logspace(1,3,3)

ans =

10 100 1000

②、利用 MATLAB 函数创建矩阵

基本矩阵函数如下:

ones()函数:产生全为 1 的矩阵,ones(n):产生 n*n 维的全 1 矩阵,ones(m,n):产生 m*n 维的全 1 矩阵;

zeros()函数:产生全为 0 的矩阵,zeros(n):产生 n*n 维的全 0 矩阵,zeros(m,n):产生 m*n 维的

全0 矩阵;

rand()函数:产生在(0,1)区间均匀分布的随机阵;rand (n):产生n*n 维的随机矩阵,rand (m,n):产生m*n 维的随机矩阵;

eye()函数:产生单位阵;eye(n):产生 n*n 维的单位矩阵,eye(m,n):产生 m*n 维的单位矩阵;

randn()函数:产生均值为 0,方差为 1 的标准正态分布随机矩阵。

③对角矩阵

a.用函数diag 可以提取矩阵对角线上的元素。

A=[1 2 3;3 4 5;1 2 3];

diag(A)

b.定义函数diag 的第二个输入参数k,可以提取出其它对角线上的元素。若k 为正数,则提取矩阵右

上角线上的元素;若k 为负数,则提取左下角对角线上的元素。

?1 2 3?

A =?3 4 5?

??

??1 2 3??

c.如果函数diag 的输入不是二维矩阵,而是矢量

B=[1 2 3];

那么,Matlab 会把输入矢量作为对角线元素产生一个新的矩阵,并将新矩阵的其它元素置为零:

④在M a t l a b中也可以用已经定义的矩阵来定义其它矩阵

B=[1.5,3.1]; B=[1.5,3.1];

S=[3.0,B] S=3.0,B];

S = T=[1 2 3;S]

3.0000 1.5000 3.1000 T =

1.0000

2.0000

3.0000

3.0000 1.5000 3.1000

如果需要对矩阵的内容进行修改和添加,则可以直接用序号定义元素,这个过程叫做索引数组。

B=[1.5,3.1]; B=[1.5,3.1];

S=[3.0,B] S=[3.0,B];

S = T=[1 2 3;S]

3.0000 1.5000 3.1000 T =

S = 1.0000 2.0000 3.0000

3.0000 2.0000 3.1000 3.0000 1.5000 3.1000

T(2,3)=3.5

T =

1.0000

2.0000

3.0000

3.0000 1.5000 3.5000

⑤冒号的使用

冒号运算符常用于定义一个新矩阵或修改原有矩阵。先用冒号定义一个等差数列

H=1:8

H =

1 2 3 4 5 6 7 8

注:上述矩阵默认步长等于 1。如果 3 个数之间使用冒号,则中间的数值为步长。

time=0:0.5:2.0

time =

0 0.5000 1.0000 1.5000 2.0000

? ? ?

在进行数值计算时,常用冒号从矩阵中提取数据。如果冒号用在代表行或列的序号位置,则表示所有的行或所有的列。

? 1 2 3 4 5 ? M = 2 3 4 5 6 ?

3 4 5 6 7 ?

提取矩阵 M 第一列的命令为

M=[1:5;2:6;3:7]; x=M(:,1) x =

1 2 3

上面的语句可以理解为提取第 1 列的所有行。 同理还可以提取行数据M=[1:5;2:6;3:7]; z=M(1,:) z =

1 2

3 4 5

上面的语句可以理解为提取第 1 列的所有行。

如果不需要提取整行或整列,冒号可以理解为“从_ 行到_行” 或“从_列到_列” M=[1:5;2:6;3:7]; W=M(2:3,:) W =

2 3 4 5 6 3 4 5 6 7

语句的含义为提取第 2 行到第 3 行的所有列。

提取矩阵 M 右下角的四个数: M=[1:5;2:6;3:7]; W=M(2:3,4:5) W =

5 6 6 7

如果在矩阵名后直接加上冒号:M (:),就会把原矩阵转换成一个长的列矢量。

另一种方法是用序号标示元素。例如矩阵 M 中第 2 行、第 3 列元素序号是 8(数完第 1 列,接下来再数第 2 列,直到第 3 列才是相应的元素)。 M (8) ans=4

如果不知道矩阵有多少行或多少列,则可以用单词 end 表示最后一行或最后一列。

M=[1:5;2:6;3:7]; M=[1:5;2:6;3:7]; M=[1:5;2:6;3:7]; M(1,end) M(end,end) M(end) ans =

ans =

ans =

5

7

7

(3)练习

①创建一个 3×3 的全零矩阵

zeros(3)

②创建一个 3×4 的全零矩阵

zeros(3,4)

③创建一个 3×3 的全 1 矩阵

ones(3)

④创建一个 5×3 的全 1 矩阵

ones(5,3)

⑤创建一个 4×6 的矩阵,矩阵中所有元素都等于

C = ? = = ? ? ? ? ? ? ? ? a=ones(4,6); a=a*pi a =

3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416 3.1416

⑥用函数 diag 创建一个对角线元素为 1、2、3 的矩阵。a=1:3; diag(a) A =

1 0 0

0 2 0 0 0

3

四、Matlab 中矩阵的运算

(1) 矩阵的加减法

如果矩阵 A 和 B 的维数相同,则 A+B 与 A-B 表示矩阵 A 与 B 的和与差。如果矩阵 A 和 B 的维数不匹配,Matlab 将给出相应的错误提示信息。

(2) 矩阵的普通乘法

矩阵乘法用“*”符号表示,当 A 矩阵列数与 B 矩阵行数相等时,二者可以进行乘法运算,否则是错误的。计算方法和线性代数中所介绍的完全相同。

? 1 2 ? ? 5 6 ? ? 1? 5 + 2 ? 7 1? 6 + 2 ? 8 ? ?19 22 ? 3 4 ? 7 8 ? 3? 5 + 4 ? 7 3? 6 + 4 ? 8? 43 55 ?

A=[1 2;3 4];

C = B=[5 6 ;7 8]; 19 22 C=A*B

43 50

(3)矩阵除法

在 Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除。如果 A 矩阵是非奇异方阵,则 A\B

是 A 的逆矩阵乘 B ,即 inv(A)*B ;而 B/A 是 B 乘 A 的逆矩阵,即 B*inv(A)。

通常,x=A \B 就是 A*x=B 的解 ,x=B /A 就是 x*A =B 的解。 (4)点运算

点运算 在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。

在Matlab 中有两种矩阵除法符号:“\”即左除和“/”即右除。如果A 矩阵是非奇异方阵,则A\B 是A 的逆矩阵乘B,即inv(A)*B;而B/A 是B 乘A 的逆矩阵,即B*inv(A)。

通常,x=A\B 就是A*x=B 的解,x=B/A 就是x*A=B 的解。

点运算在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。

“”

“”

At the end, Xiao Bian gives you a passage. Minand once said, "people who learn to learn are very happy people.". In every wonderful life, learning is an eternal theme. As a professional clerical and teaching position, I understand the importance of continuous learning, "life is diligent, nothing can be gained", only continuous learning can achieve better self. Only by constantly learning and mastering the latest relevant knowledge, can employees from all walks of life keep up with the pace of enterprise development and innovate to meet the needs of the market. This document is also edited by my studio professionals, there may be errors in the document, if there are errors, please correct, thank you!

相关文档