第三章 Matlab语言程序设计基础 (1)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1.2 Matlab的矩阵表示
利用冒号表达式建立一个向量
一般格式是:e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值。
用linspace,logspace函数产生行向量
格式为:linspace(a,b,n),logspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素 总数。 显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价
3.1.2 Matlab的矩阵表示
行向量
列向量
3.1.2 Matlab的矩阵表示
矩阵元素还可以由表达式构成.
• 例:
• >>x=[-1.3, sqrt(3), (1+2+3)*4/5] • 得到如下结果
• x= • -1.3000 1.7321 4.8000
3.1.2 Matlab的矩阵表示
矩阵元素引用
例 >>toeplitz(1:3) ans 1 23 212 321
3.1.2 Matlab的矩阵表示
伴随矩阵
MATLAB生成伴随矩阵的函数是compan(p),其中p是一个 多项式的系数向量,高次幂系数排在前,低次幂排在后。
x 3 - 7 x + 6 的伴随矩阵,可用命令: 例: 求多项式的
>>p=[1,0,-7,6]; >>compan(p) ans= 0 -7 6 1 0 0 01 0
注意:
• 逻辑运算中,矩阵元素非0即1 • 逻辑与、或、异或操作中的两个矩阵维数相同或其中之 一为标量。
3.2.3 关系运算 六种关系运算
• • • • • • 小于:< 不大于:<= 大于:> 不大于:>= 等于:== 不等于:~=
运算规则
• 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达 式结果为1,否则为0。 • 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的 元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系 运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。 • 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一 个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关 系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。
3.1.2 Matlab的矩阵表示
Байду номын сангаас
矩阵拆分
(1) 利用冒号表达式获得子矩阵 ① A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A 矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列 的元素。 ② A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素, A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k ~k+m列中的所有元素。 此外,还可利用一般向量和end运算符来表示矩阵 下标,从而获得子矩阵。end表示某一维的末尾元素 下标。
• 变量名区分大小写;
• 变量名最多不超过63个字符; • 变量名必须以字母打头,之后可以是任意字母、数字 或下划线,变量名中不允许使用标点、空格 • MATLAB的保留关键字不能作为变量名
3.1.1变量、常量与赋值语句结构
MATLAB 保留常量
常 量 ans pi eps inf NaN i,j lasterr lastwarn 描 述 用于结果的缺省变量名 圆周率 浮点数相对误差限 无穷大,如 1/0 不定量,如 0/0 或 inf/inf i=j= 1 存放最新一次的错误信息 存放最新的警告信息
3.1.2 Matlab的矩阵表示
万达摩(vander)方阵
最后一列全为1,倒数第二列为一个指定的向量,其他各列是 其后列与倒数第二列的点乘积。可以用一个指定向量生成一个 万达摩矩阵。在MATLAB中,函数vander(V)生成以向量V为 基础向量的万达摩矩阵。
例:>>vander([1;2;3;5])
3.1.2 Matlab的矩阵表示
零矩阵
(1) 建立一个3×3零矩阵。 zeros(3) (2) 建立一个3×2零矩阵。 zeros(3,2) (3) 设A为2×3矩阵,则可以用zeros(size(A))建立一个 与矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的零矩阵
例:
1 2 3 A 4 5 6 7 8 9
执行如下命令
>>A=[A;[1 3 5]] 将生成新的矩阵
1 4 A 7 1 2 3 5 6 8 9 3 5
新增向量与原矩阵必须维数匹配,否则出现错误信息
3.1.2 Matlab的矩阵表示
复数矩阵
ans= 1 1 1 1
8
27
4
9
2
3
1
1
125 25 5 1
3.1.2 Matlab的矩阵表示
托普利兹矩阵
除第一行第一列外,其他每个元素都与左上角的元素相同 。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以 x为第一列,y为第一行的托普利兹矩阵。这里x, y均为向 量,两者不必等长。toeplitz(x)用向量x生成一个对称的托 普利兹矩阵。
• 输入的字符串要用单引号括起来。每个字符占用一个 元素位置。
• 例:>>s=‘Hello’
•
•
s=
Hello
• abs(s): 将字符串转成ASCII码。
• setstr(v):将v向量转成字符串。
3.2 基本运算与输入输出
3.2.1 代数运算
假定有两个矩阵A和B
• 矩阵转置:B=A’
• 矩阵加减运算(维数相同的两个矩阵,或其中之一为标量) A+B A-B
3.2.1 代数运算 矩阵的乘方
• 一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
点运算
在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符 前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是 指它们的对应元素进行相关运算,要求两矩阵的维数相同。
• B=[1 2; 3 4]+1i*[5 6; 7 8] • B=[1+5i 2+6i; 3+7i 4+8i] 注:矩阵元素内部不能有空格;数字和i之间不能留空格 ,1i中的1不可忽略。
特殊矩阵
• 伴随矩阵,对角矩阵,万达摩方阵,魔方矩阵 • 全0矩阵,全1矩阵,随机数矩阵,单位矩阵,线性等 距向量,对数等分向量,设三维绘图基底坐标平面
第三章 MATLAB 语言程序设计基础 3.1 基本数据类型 3.2 基本运算与输入输出 3.3 程序流程语句 3.4 文件编写与调试 3.5 编程技巧
3.1 基本数据类型
数值型:双精度、单精度、整数
字符串型
函数句柄 Java类 逻辑类 单元结构
数据结构体
3.1.1变量、常量与赋值语句结构
变量命名规则
3.2.4 矩阵元素的数据变换
特殊函数
bessel: 贝塞尔函数 gamma: 函数 rat: 有理逼近
erf: 误差函数
inverf: 反误差函数 elipk: 第一种完全的椭圆积分 elipj: 雅可比椭圆函数
3.1.2 Matlab的矩阵表示
魔方(magic)矩阵
每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵 ,其元素由1,2,3,…,n2共n2个整数组成。MATLAB提供了求魔 方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。
例:>>magic(3)
ans= 816 357 492
3.1.2 Matlab的矩阵表示
随机矩阵:
(1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。
命令如下: x=20+(50-20)*rand(5) y=0.6+sqrt(0.1)*randn(5)
3.1.2 Matlab的矩阵表示
多维数组
3.1.1变量、常量与赋值语句结构
赋值语句 • 1. 直接賦值
• <变量>=<表达式 > • <表达式> 其中“表达式”是用运算符将有关运算量连接起来的式 子,其结果是一个矩阵。 注:第二种语句形式下,将表达式的值赋给MATLAB的 保留变量ans。
• 2. 函数调用
• [返回变量列表]=函数名(输入变量列表) 函数名的要求与变量名要求相同,函数名在对应 MATLAB路径下有同名.m文件。
A+2
A-2
• 矩阵乘法(维数匹配的两个矩阵,或其中之一为标量) 若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。 • 矩阵除法 两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异 方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是 inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。一般 A\B≠B/A。
3.2.4 矩阵元素的数据变换
基本数学函数
abs: 绝对值或复数的模 floor:向负方向取整
angle: 相位角
sqrt: 平方根 real: 实部
ceil:向正方向取整
sign:符号函数 rem:求余函数
imag: 虚部
conj: 共轭复数 round: 四舍五入取整
exp:指数函数
log: 自然对数 log10:常用对数
3.1.2 Matlab的矩阵表示
矩阵:纵横排列的二维数据表格 向量:矩阵只有一行或一列时,就成为向量 标量:矩阵只有一行一列,就成为标量 矩阵元素:实数或复数或表达式 矩阵输入方法:
• 直接输入法; • 利用M文件建立矩阵。
3.1.2 Matlab的矩阵表示
简单矩阵 例: 1 2 3
A 4 5 6 7 8 9
• 命令 cat()
• 格式 • A=cat(n,A1,A2,……)
• n=1时,按[A1;A2;A3]构造
• n=2时,按[A1,A2,A3]构造 • n=3时,构造如图3-1。
测量矩阵维数
• size()矩阵维数 • length()矩阵各维数最大值
3.1.2 Matlab的矩阵表示
字符串变量及其处理
3.1.2 Matlab的矩阵表示 (2) 利用空矩阵删除矩阵的元素 在MATLAB中,定义[ ]为空矩阵。 给变量X赋空矩阵的语句为 >> X=[ ] 注意,X=[ ]与clear X不同,clear是将X从工作空间中 删除,而空矩阵则存在于工作空间中,只是维数为0。
3.1.2 Matlab的矩阵表示 建立大矩阵:大矩阵可由方括号中的小矩阵或向量建立。
3.2.3 关系运算 1. find: 寻找逻辑值的向量元素下标 2. all: 逻辑条件是否全部非零 3. any: 逻辑条件是否任何一个非零 4. exist: 检查某变量是否存在 5. isnan: 检查是否为非数值量 6. finite: 检查是否无穷大 7. isempty: 检查是否为空 8. isstr: 检查是否为字符串 9. strcmp: 比较字符串
fix: 截尾取整
3.2.4 矩阵元素的数据变换
三角函数
sin: 正弦 sinh:双曲正弦
cos: 余弦
tan: 正切 asin: 反正弦 acos: 反余弦 atan: 反正切
cosh:双曲余弦
tanh:双曲正切 asinh:反双曲正弦 acosh:反双曲余弦 atanh:反双曲正切
atan2: 双值反正切
矩阵翻转
• rot90(A), 矩阵A逆时针翻转90度; • flipup(A),矩阵A上下翻转;
• fliplr(A),矩阵A左右翻转;
3.2.2 逻辑运算 六种逻辑运算 • 逻辑与: &, and() • 逻辑或: |, or() • 逻辑非: ~, not() • 逻辑异或: xor() • 先决逻辑与: && • 先决逻辑或: ||
1)通过下标引用矩阵的元素 例如, A(3,2)=200 • >>x(5)=abs(x(1))
• X=-1.3000 1.7321 4.8000 0 1.3000
2)通过矩阵元素的序号来引用矩阵元素 矩阵元素的序号就是相应元素在内存中的排列顺序。在 MATLAB中,矩阵元素按列存储,先第一列,再第二列,依 次类推。 序号(Index)与下标(Subscript )是一一对应的,以m×n矩 阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。其相互转换 关系也可利用sub2ind和ind2sub函数求得。