计算机仿真技术薛定宇教材
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[U,S,V]=svd(A) 例:a =
98
68
[u,s,v]=svd(a)
u=
0.7705 -0.6375
0.6375 0.7705
s=
15.5765 0
0
1.5408
2020/12/7
求矩阵A的奇异值及 分解矩阵,满足 U*S*V’=A,其中U、 V矩阵为正交矩阵 (U*U’=I),S矩阵 为对角矩阵,它的对 角元素即A矩阵的奇 异值。
>>a=[1 2 3;4 5 6]'
>>b=[1+2i 2-7i].'
a=
b=
14
1.0000 + 2.0000i
25
2.0000 - 7.0000i
36
>>b=[1+2i 2-7i]'
b = 1.0000 - 2.0000i
2020/12/7
2.0000 + 7.0000i23
2、四则运算与幂运算
单元数组:矩阵的每个元素不是数值,而是 可以存储任意类型的信息
类与对象:自行编写包含各种复杂详细信息 的变量,即类变量,变量可包含各种下级的 信息,也可重新定义运算
符号变量:区别与常规数值变量,便于公式 推导和解析求解
2020/12/7
7
补充:数值型数据的显示格式
任何MATLAB的语句的执行结果都可以 在屏幕上显示,同时赋值给指定的变量,没 有指定变量时,赋值给一个特殊的变量ans, 数据的显示格式由format命令控制。
2020/12/7
30
消除子块:如果将矩阵的子块赋值为空矩阵[ ], 则相当于消除了相应的矩阵子块。
2、矩阵的大小
[m,n]=size(A,x):返回矩阵的行列数m与n, 当x=1,则只返回行数m,当x=2,则只返回 列数n。
length(A)=max(size(A)):返回行数或列数的 最大值。
左除(\)运算两矩阵的行数相等,右除(/) 运算两矩阵的列数相等。
只有方阵才可以求幂.
例:a=[1 2;3 4];b=[ 3 5; 5 9]
>> a/b=[–0.50 0.50;3.50 –1.50]%a/b=a*inv(b)
>>a\b=[– 1 – 1;2 3]
%a\b=inv(a)*b
>>a^3=[37 54; 81 118]
2020/12/7
28
处理优先级为
算术运算符>比较运算符>逻辑运算符
2020/12/7
29
(4)矩阵的相关操作 1、矩阵下标 A(m,n):提取第m行,第n列元素
A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2):提取第m1行到第m2行和第 n1列到第n2列的所有元素(提取子块)。 A(:):得到一个长列矢量,该矢量的元素按矩 阵的列进行排列。
2020/12/7
3
1.1 MATLAB语言的常量与变量
(1)变量的命名:变量的名字必须以字母开头 (不能超过19个字符),之后可以是任意字母、 数字或下划线;变量名称区分字母的大小写; 变量中不能包含有标点符号。
(2)一些特殊的变量(常量) ans —— 用于结果的缺省变量名 pi ——圆周率
2020/12/7
2、函数调用语句
[返回变量列表]=函数名(输入变量列表)
函数名对应于matlab路径下的一个文件。若
干变量直接可用逗号分隔
2020/12/7
11
补充:命令行编辑器 (1)方向键和控制键可以编辑修改已输入的命
令: :回调上一行命令 :回调下一行命令
(2)命令窗口的分页输出 more off:不允许分页 more on:允许分页 more(n):指定每页输出的行数
20
(3)一些常用的特殊矩阵 单位矩阵:eye(m,n); eye(m) 零矩阵:zeros(m,n); zeros(m) 一矩阵:ones(m,n); ones(m) 对角矩阵:对角元素向量 V=[a1,a2,…,an] A=diag(V)
随机矩阵:rand(m,n)产生一个m×n的均匀分 别的随机矩阵
2020/12/7
14
补充:MATLAB的工作空间
MATLAB的工作空间包含了一组可 以在命令窗口中调整(调用)的参数
who:显示当前工作空间中所有变量的一 个简单列表
whos:则列出变量的大小、数据格式等详 细信息
clear :清除工作空间中所有的变量
clear 变量名:清除指定的变量
2020/12/7
15
补充:使用帮助 1、help命令,在命令窗口中显示
MATLBA的所有函数都是以逻辑群 组方式进行组织的,而MATLAB的目录 结构就是以这些群组方式来编排的。 help matfun :矩阵函数-数值线性代数 help general:通用命令 help graphics:通用图形函数 help elfun:基本的数学函数 help elmat:基本矩阵和矩阵操作 help datafun:数据分析和傅立叶变换函 数
format short e:短格式e方式
9.9123e+001
format long e:长格式e方式
9.912345678900000e+001
format bank: 2位十进制
99.12
format hex: 十六进制格式 4058c7e6b74dce59
2020/12/7
9
1.3 MATLAB的基本语句结构 MATLAB的语句有如下两种基本结构 1、直接赋值语句
4
Inf ——无穷大 NaN——不定量 eps——浮点运算误差限。默认值2.2204×10-16 若某数绝对值小于eps,则可认为此量为0 i,j——纯虚数量。若在程序中被改写,则恢 复该变量时,可进行如下设置
i=sqrt(-1) 即可恢复纯虚数量。
2020/12/7
5
1.2 MATLAB的数据结构
format只是影响结果的显示,不影响其 计算与存储。
注意:调用格式为 format XXX; a= 99.1234
2020/12/7
8
如果结果为整数,则显示没有小数;如果结 果不是整数,则输出形式有:
format short:5位定点数
99.1253
format long: 15位定点数 99.12345678900000
rank(A):求矩阵的秩
2020/12/7
31
>>a=[1 2 3;3 4 5]; >>[m,n]=size(a) m=
2 n=
3
>>length(a) ans =
3 >>max(size(a)) ans =
3
>>rank(a) ans =
2
2020/12/7
32
补充:矩阵分解运算
(1)奇异值分解
矩阵型数值数据:保证计算精度, MATLAB总是以双字长浮点数(双精度) 来执行所有的运算。
双精度浮点数(IEEE计数法):占8个 字节(64位),11个指数位、53位尾数、一 个符号位
值域范围 -1.7×10308—1.7×10308
2020/12/7
6
字符串型数据:采用单引号进行定义
多维数组:一般矩阵的直接拓展,用于彩色 数字图像描述及多变量系统
加 减 乘 左除 右除 幂
+-
*\
/^
注意:
只有维数相同的矩阵才能进行加减运算。
只有当两个矩阵中前一个矩阵的列数和后一 个矩阵的行数相同时,才可以进行乘法运算。
a\b运算等效于求a*x=b的解,即
a\b=inv(a)*b
而a/b等效于求x*b=a的解,即
a/b=a*inv(b)
2020/12/7
24
2020/12/7
25
3、逆矩阵与行列式计算 求逆:inv(A); 求行列式:det(A) 要求矩阵必须为方阵
4、矩阵的点运算 两矩阵之间的点运算是对它们对应元素的运算
例:a=[1 2;3 4];b=[ 3 5; 5 9] 计算 a.*b=?a.^3= ?
2020/12/7
26
(2)矩阵的逻辑运算
注意:运算元只有两个值即0和1,如指定数 为0,则认为其为逻辑0,如指定数是非0的, 则认为其为逻辑1。逻辑运算包括:
A&B 与 A|B 或 A~B 非 xor(A,B) 异或
2020/12/7
27
(3)矩阵的比较运算
假设有:A=[1 2 -1 -5] B=[0 2 3 1]
< 小于
A<B ans=[0 0 1 1]
用线性等间距生成向量矩阵
>>[start : step : end] start:起始值
>>a=[1:2:10]
step:步长,可取负数
a=
end:终止值
13579
>>a=linspace(n1,n2,n)
在线性空间上,行矢量的值从n1到n2,个 数为n,默认n为100。
>>a=linspace(1,10,10)
v= 0.6907 -0.7231 0.7231 0.6907
33
(2)特征值分解 [V,D]=eig(A) 例: a =
98 68 [v,d]=eig(a) v= 0.7787 -0.7320 0.6274 0.6813 d= 15.4462 0 0 1.5538
2020/12/7
21
1.4.2、矩阵的运算 (1)代数运算 (2)逻辑运算 (3)比较运算 (4)矩阵的相关操作
补充:矩阵分解运算 多项式运算
2020/12/7
22
(1)矩阵的代数运算
1、转置:对于实矩阵用(’)符号或(.’) 求转置结果是一样的;然而对于含复数的 矩阵,则(’)将同时对复数进行共轭处 理,而 (.’)则只是将其排列形式进行转 置。
1
三 函数编写与调试
3.1 MATLAB的程序类型
3.2 MATLAB函数的基本结构
四 MATLAB绘图简介
2020/12/7
2
一 MATLAB的数据结构和语句结构
MATLAB语言的显著特点
1、具有强大的矩阵运算能力
2、是一种演算式语言
MATLAB的基本数据单元是既不需要指 定维数,也不需要说明数据类型的矩阵(向 量和标量为矩阵的特例),而且数学表达式 和运算规则与通常的习惯相同。MATLAB语 言编程简单,使用方便。
2020/12/7
12
回车:前进一行 空格:显示下一页 q:结束当前显示 (3)多行命令(…) 如果命令语句超过一行或者太长希望分行输入, 则可以使用多行命令继续输入。
>>S=1-12+13+4+…
9-4-18;
2020/12/7
13
补充:常用数学函数
abs、sin、cos、tan、asin、acos、atan、 sqrt、exp、imag、real、sign、log、 log10、conj(共扼复数)等
> 大于
A>B ans=[1 0 0 0]
<= 小于等于 A<=B ans=[0 1 1 1]
>= 大于等于 A>=B ans=[1 1 0 0]
== 等于
A=B ans=[0 1 0 0]
~= 不等于 A~=B ans=[1 0 1 1]
还有一类常用的运算,即find()函数,方便 查询满足某种关系的数组下标
a=
1 2020/12/7 2 3 4 5 6 7 8 9 10
19
>> a=logspace(n1,n2,n)
对数空间上,行矢量的值从10n1到10n2,数 据个数为n,默认n为50。这个指令为建立对数 频域轴坐标提供了方便。 >>a=logspace(1,3,3) a=
10 100 1000
2020/12/7
2020/12/7
17
1.4 MATLAB的基本运算
1.4.1 矩阵的输入 (1)在命令窗口中输入矩阵
矩阵生成不但可以使用纯数字(含复数), 也可以使用变量(或者说采用一个表达 式)。矩阵的元素直接排列在方括号内, 行与行之间用分号隔开,每行内的元素使 用空格或逗号隔开。
2020/12/7
18
(2)语句生成
第二章 MATLAB语言基础
一 MATLAB的数据结构和语句结构
1.1 matlab的常量与变量
1.2 matlab的数据结构
1.3 matlab的基本语句结构
1.4 matlab的基本运算
二 MATLAB基本流程控制结构
2.1 循环结构
试探结构
2020/12/7
2020/12/7
16
help ops:操作符和特殊字符 help polyfun:多项式和内插函数 help lang:语言结构和调试 help strfun:字符串函数 help control:控制系统工具箱函数 2、helpwin:帮助窗口 3、helpdesk:帮助桌面,浏览器模式 4、demo:打开示例窗口
>>赋值表达式; >>赋值变量=赋值表达式;
当键入回车键时,该语句被执行。通过等 号将表达式的值赋予变量。若省略赋值变 量和符号,则赋值给ans
2020/12/7
10
注:语句执行之后,窗口自动显示出语句执行 的结果。如果希望结果不被显示,则只要在 语句之后加上一个分号(;)即可。此时尽 管结果没有显示,但它依然被赋值并在工作 空间中分配了内存。