第二章 矩阵基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要相等 。
>>x = [1 4 12 3 6 4 7 5 8 6] >>a = x(3) >>a = x([1 3 10]) >>a = x(8:end) >>a = x(6:-1:1) >>x(4)=50 >>x(16)=50
二、二维数组/矩阵
1.矩阵创建
逐个元素输入法
x = [1 2 3; 4 5 6;7 8 9]
对二维数组进行一维编号的规则是,把二维数组 的所有列按照先后顺序首尾相连构成一个一维的 数列,然后按照先后顺序对这个一维长列进行一 维编号。
逻辑标识 逻辑标识的基础是逻辑数组,它一般产生 于逻辑运算。
3.二维矩阵的访问与赋值 元素访问 指定行和列访问 x (a, b) 指定行访问 x (a, : ) 指定列访问 x (: , b) 单下标全元素访问 x ( : ) 单下标定点访问 x (a) 逻辑标识访问 x (L) L为逻辑数组
得蒙矩阵
希尔伯特矩阵 hilb (n)
希尔伯特矩阵的元素值由所在矩阵位置的全 标识决定,等于1/ (i + j -1 ),其逆矩阵用专 门的函数invhilb (n)来求取。
帕斯卡矩阵 pascal (n) 二次项(x+y)^n展开后的系数随n的增大组成 一个三角形表,称为杨辉三角形。由杨辉三 角形表组成的矩阵称为帕斯卡(Pascal)矩阵。 函数pascal(n)生成一个n阶帕斯卡矩阵。
托普利兹矩阵 toeplitz (x,y) 托普利兹(Toeplitz)矩阵除第一行第一列外, 其他每个元素都与左上角的元素相同。生成 托普利兹矩阵的函数是toeplitz(x,y),它生 成一个以x为第一列,y为第一行的托普利兹
矩阵。这里x, y均为向量,两者不必等长。
toeplitz(x)用向量x生成对称的托普利兹矩
所有关系表达式和逻辑表达式的计算结果,是一 个由0和1组成的逻辑数组,1表示真,0表示假。 用islogical()函数来判断是否为逻辑数组 逻辑数组是数值类的子类。它继承了数值数组的 全部属性,因此完全接受对数值数组进行个各项 操作;同时它表示着事物的判断结果,可以用于 对数组的寻访等特殊用途。
>> A = ones(2,4) >> A = eye(4) >> A = zeros(2,4) >> A(:) = ones(1,8) >> A = diag([1 2 3 4]) >> A = rand(2,4) >> A = randn(2,4)
随机数组矩阵命令的应用
(1)在区间[20,50]内均匀分布的5阶随机矩阵
魔方矩阵 magic (n)
魔方矩阵有一个有趣的性质,其每行、每
列及两条对角线上的元素和都相等。对于n
阶魔方阵,其元素由从1开始的,n的平方
个连续的整数组成。MATLAB提供了求魔
方矩阵的函数magic(n),其功能是生成一
个n阶魔方阵。
范德蒙矩阵 vander (v) 范得蒙矩阵最后一列全为1,倒数第二列为 一个指定的向量,其他各列是其后列与倒 数第二列的点乘积。可以用一个指定向量 生成一个范得蒙矩阵。在MATLAB中,函 数vander(V)生成以向量V为基础向量的范
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12] >> a = length(A) >> b = ndims(A) >> c = numel(A) >> [m,n] = size(A) 下面两条语句等效 >>zeros(size(A))
>>zeros(m,n)
6.特殊计算矩阵
第二章 矩阵基础
MATLAB设计矩阵及其运算的目的
使计算程序简单、易读,使程序指令更接
1.
近于教科书上的数学计算公式。
2.
提高程序的向量化程度,提高计算效率,
节省计算机开销。
一、一维数组/向量
1.数组创建
逐个元素输入法 x = [2, pi/2, sqrt(3), 3+5i] x = [1 2 3 4 5 6]
数组的乘除运算以及转置的运算符号前面
的小黑点不能遗漏,否则不按数组运算规
则进行
在执行数组与数组之间运算时,参与运算
的数组双方的维数要一致,运算所得的结
果数组也与原数组同维数
关系运算和逻辑运算只对数组有效
1.基本矩阵算术运算 MATLAB的基本算术运算有:+(加)、- (减)、*(乘)、/(右除)、\(左除)、^(乘方)。 注意,运算是在矩阵意义下进行的。
最终的关系运算的结果是一个维数与原矩阵
相同的矩阵,它的元素由0或1组成。
>> A = 1 : 9, B = 10 – A,
>> r1 = (A < 4), r2 = (A = = B)
4.特殊二维矩阵建立
全1矩阵 ones (a,b)
对角矩阵 eye (n),对角全为1的n维方阵
全0矩阵 zeros (a,b)
任意对角矩阵 diag (n),n为一维数组
随机均匀分布矩阵 rand (a,b),产生[0 1]之 间均匀分布的随机数组 正态随机分布矩阵 randn (a,b),产生均值 为0,方差为1的标准正态分布矩阵
利用利用小矩阵组成大的矩阵
为了表达简便,大矩阵可由小矩阵或者向
量组合而成。
x1 = [1 2 3; 4 5 6;7 8 9] x2 = [1 2 3] A = [x1, x1; x2, x2] 注意组合过程中各个分块的行列要匹配
2.二维矩阵的标识 全下标标识 指出元素位于第几行第几列。 单下标标识 用一个标识来指出元素在数组中的位置。
输入数组必须用[ ]为输入界限。
数组元素之间必须用逗号或者空格键分隔。
单个元素可以为数值、赋值变量或者表达式。
行与行之间用分号或者换行隔离。
利用M文件创建保存数组矩阵 对于需要经常调用的数组,我们可以用一个 M文件来保存它,便于经常调用。 第一步,在文件编辑器中输入数组的内容; 第二步,保存此文件为.M文件; 第三步,在命令窗口运行此文件,该数组就 会产生在工作空间中。
阵。
伴随矩阵compan (p) MATLAB生成伴随矩阵的函数是compan(p), 其中p是一个多项式的系数向量,高次幂系数排 在前,低次幂排在后
将101~125等25个数填入一个5行5列的表格
中,使其每行每列及对角线的和均为565。
>> m = 100 + magic(5)
生成以向量V为基础向量的范得蒙矩阵。
定数源自文库性采样法
设定总点数下,均匀采样产生一维行数组。
x = linspace (a,b,n)
a为起点,b为终点,n为总点数。
N缺省,默认产生100点。 指令产生(1×n)数组。
定数对数采样法 设定总点数下,经过常用对数采样生成一 维行数组。 x = logspace (a,b,n)
三、数组计算与矩阵计算
数组运算是指无论在数组上施加什么运算, 总认定该种运算对被运算数组中的每一个元 素平等的实施同样的操作。从外观形状和数 据结构上看,二维数组和数学中的矩阵没有 区别。但是,矩阵作为一种变化或者映射算 子的体现,矩阵的运算有着明确而严格的数 学规则。因此,数组运算和矩阵运算在 MATLAB里面是有区别的。
2.数组运算(点运算) 在MATLAB中,数组运算因为其运算符是 在有关算术运算符前面加点,所以又叫点 运算。点运算符有.*、./、.\和.^。两矩阵进
行点运算是指它们的对应元素进行相关运
算,要求两矩阵的维参数相同。
3.逻辑数组 在所有关系表达式和逻辑表达式中,作为输入的 任何非零数都被看做是逻辑真,只有零才被认为 是逻辑假。
全下标(subscript)与单下标 (index)的转换 (index)与 (subscript )是一一对应的,以m×n 矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。 其相互转换关系也可利用sub2ind和ind2sub函 数求得。 >> A = [1 2 3; 4 5 6;7 8 9] >> sub2ind(size(A),1,2) >> [i,j]=ind2sub(size(A),3)
在10的a次方与10的b次方之间产生n个数。 N缺省,默认取50点。 指令产生(1×n)数组。
2.元素的访问与赋值
子数组的访问
访问什么样的子数组,取决于x (index)中
的序号index,index可以是单个正整数或
者是数组,取值必须在[1, end]闭区间内。
子数组的赋值
重新被赋值的数组长度与送入的数据长度
>> A = vander(V)
求4阶希尔伯特矩阵及其逆矩阵。
>> H=hilb(4), H=invhilb(4)
用向量生成一个对称的托普利兹矩阵
>>T=toeplitz(1:6)
求多项式的x3-7x+6的伴随矩阵
>>p=[1,0,-7,6] >>compan(p) 求(x+y)^5的展开式。 >> pascal(6) 矩阵次对角线上的元素1,5,10,10,5,1即为展开 式的系数。
关系运算 MATLAB提供了6种关系运算符:<(小于)、 <=(小于或等于)、>(大于)、>=(大于或等于)、 ==(等于)、~=(不等于)。它们的含义不难理 解,但要注意其书写方法与数学中的不等式 符号不尽相同。
关系运算符的运算法则
当两个比较量是标量时,直接比较两数的大 小。若关系成立,关系表达式结果为1,否 则为0。
>>x=20+(50-20)*rand(5)
(2)均值为0.6、方差为0.1的5阶正态分布随机 矩阵。 >>y=0.6+sqrt(0.1)*randn(5)
5.矩阵信息函数
length (n) 返回最长维的长度
ndims (n) 返回维数
numel (n) 返回元素个数
[a, b] = size (n) 返回每一维的长度
当参与比较的量是两个维数相同的矩阵时, 比较是对两矩阵相同位置的元素按标量关系 运算规则逐个进行,并给出元素比较结果。 最终的关系运算的结果是一个维数与原矩阵 相同的矩阵,它的元素由0或1组成。
当参与比较的一个是标量,而另一个是矩阵 时,则把标量与矩阵的每一个元素按标量关
系运算规则逐个比较,并给出元素比较结果。
矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和AB实现矩阵的加减运算。运算规则是:若A和 B矩阵的维数相同,则可以执行矩阵的加减 运算,A和B矩阵的相应元素相加减。如果A 与B的维数不相同,则MATLAB将给出错误 信息,提示用户两个矩阵的维数不匹配。
矩阵乘法
假定有两个矩阵A和B,若A为m×n矩阵,
B为n×p矩阵,则C=A*B为m×p矩阵。
矩阵的乘方
一个矩阵的乘方运算可以表示成A^x,要
求A为方阵,x为标量。
矩阵除法 在MATLAB中,有两种矩阵除法运算:\和/, 分别表示左除和右除。如果A矩阵是非奇异方 阵,则A\B和B/A运算可以实现。A\B等效于A 的逆左乘B矩阵,也就是inv(A)*B,而B/A等 效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。 对于含有标量的运算,两种除法运算的结果相 同,如3/4和4\3有相同的值,都等于0.75。又 如,设a=[10.5,25],则a/5=5\a=[2.1000 5.0000]。 对于矩阵来说,左除和右除表示两种不同的除 数矩阵和被除数矩阵的关系。对于矩阵运算, 一般A\B≠B/A。
矩阵赋值
双下标赋值
单下标赋值 全元素赋值
x (a, b) = c
x (n) = c x(:)=S(:)
>> x = [1 2 3 4; 5 6 7 8; 9 10 11 12] >> x(3,2) >> x(3,:) >> x(:,2) >> x(8) >> x(6:10) >> x(8:-1:4) >> x(:) =1:12 >> x(3,2)=1 >> x(8)=1
输入数组必须用[ ]为输入界限。 数组元素之间必须用逗号或者空格键分隔。
单个元素可以为数值、赋值变量或者表达式。
冒号生成法 冒号用于表示向量、带有下标的数组以及 用来表示循环。这里冒号表示步长设定。 x = a : inc : b
a为数组起点,b为数组终点,inc为步长。 inc可以省略,缺省时默认为1;inc可以为 正也可以为负。
>>x = [1 4 12 3 6 4 7 5 8 6] >>a = x(3) >>a = x([1 3 10]) >>a = x(8:end) >>a = x(6:-1:1) >>x(4)=50 >>x(16)=50
二、二维数组/矩阵
1.矩阵创建
逐个元素输入法
x = [1 2 3; 4 5 6;7 8 9]
对二维数组进行一维编号的规则是,把二维数组 的所有列按照先后顺序首尾相连构成一个一维的 数列,然后按照先后顺序对这个一维长列进行一 维编号。
逻辑标识 逻辑标识的基础是逻辑数组,它一般产生 于逻辑运算。
3.二维矩阵的访问与赋值 元素访问 指定行和列访问 x (a, b) 指定行访问 x (a, : ) 指定列访问 x (: , b) 单下标全元素访问 x ( : ) 单下标定点访问 x (a) 逻辑标识访问 x (L) L为逻辑数组
得蒙矩阵
希尔伯特矩阵 hilb (n)
希尔伯特矩阵的元素值由所在矩阵位置的全 标识决定,等于1/ (i + j -1 ),其逆矩阵用专 门的函数invhilb (n)来求取。
帕斯卡矩阵 pascal (n) 二次项(x+y)^n展开后的系数随n的增大组成 一个三角形表,称为杨辉三角形。由杨辉三 角形表组成的矩阵称为帕斯卡(Pascal)矩阵。 函数pascal(n)生成一个n阶帕斯卡矩阵。
托普利兹矩阵 toeplitz (x,y) 托普利兹(Toeplitz)矩阵除第一行第一列外, 其他每个元素都与左上角的元素相同。生成 托普利兹矩阵的函数是toeplitz(x,y),它生 成一个以x为第一列,y为第一行的托普利兹
矩阵。这里x, y均为向量,两者不必等长。
toeplitz(x)用向量x生成对称的托普利兹矩
所有关系表达式和逻辑表达式的计算结果,是一 个由0和1组成的逻辑数组,1表示真,0表示假。 用islogical()函数来判断是否为逻辑数组 逻辑数组是数值类的子类。它继承了数值数组的 全部属性,因此完全接受对数值数组进行个各项 操作;同时它表示着事物的判断结果,可以用于 对数组的寻访等特殊用途。
>> A = ones(2,4) >> A = eye(4) >> A = zeros(2,4) >> A(:) = ones(1,8) >> A = diag([1 2 3 4]) >> A = rand(2,4) >> A = randn(2,4)
随机数组矩阵命令的应用
(1)在区间[20,50]内均匀分布的5阶随机矩阵
魔方矩阵 magic (n)
魔方矩阵有一个有趣的性质,其每行、每
列及两条对角线上的元素和都相等。对于n
阶魔方阵,其元素由从1开始的,n的平方
个连续的整数组成。MATLAB提供了求魔
方矩阵的函数magic(n),其功能是生成一
个n阶魔方阵。
范德蒙矩阵 vander (v) 范得蒙矩阵最后一列全为1,倒数第二列为 一个指定的向量,其他各列是其后列与倒 数第二列的点乘积。可以用一个指定向量 生成一个范得蒙矩阵。在MATLAB中,函 数vander(V)生成以向量V为基础向量的范
>> A = [1 2 3 4; 5 6 7 8; 9 10 11 12] >> a = length(A) >> b = ndims(A) >> c = numel(A) >> [m,n] = size(A) 下面两条语句等效 >>zeros(size(A))
>>zeros(m,n)
6.特殊计算矩阵
第二章 矩阵基础
MATLAB设计矩阵及其运算的目的
使计算程序简单、易读,使程序指令更接
1.
近于教科书上的数学计算公式。
2.
提高程序的向量化程度,提高计算效率,
节省计算机开销。
一、一维数组/向量
1.数组创建
逐个元素输入法 x = [2, pi/2, sqrt(3), 3+5i] x = [1 2 3 4 5 6]
数组的乘除运算以及转置的运算符号前面
的小黑点不能遗漏,否则不按数组运算规
则进行
在执行数组与数组之间运算时,参与运算
的数组双方的维数要一致,运算所得的结
果数组也与原数组同维数
关系运算和逻辑运算只对数组有效
1.基本矩阵算术运算 MATLAB的基本算术运算有:+(加)、- (减)、*(乘)、/(右除)、\(左除)、^(乘方)。 注意,运算是在矩阵意义下进行的。
最终的关系运算的结果是一个维数与原矩阵
相同的矩阵,它的元素由0或1组成。
>> A = 1 : 9, B = 10 – A,
>> r1 = (A < 4), r2 = (A = = B)
4.特殊二维矩阵建立
全1矩阵 ones (a,b)
对角矩阵 eye (n),对角全为1的n维方阵
全0矩阵 zeros (a,b)
任意对角矩阵 diag (n),n为一维数组
随机均匀分布矩阵 rand (a,b),产生[0 1]之 间均匀分布的随机数组 正态随机分布矩阵 randn (a,b),产生均值 为0,方差为1的标准正态分布矩阵
利用利用小矩阵组成大的矩阵
为了表达简便,大矩阵可由小矩阵或者向
量组合而成。
x1 = [1 2 3; 4 5 6;7 8 9] x2 = [1 2 3] A = [x1, x1; x2, x2] 注意组合过程中各个分块的行列要匹配
2.二维矩阵的标识 全下标标识 指出元素位于第几行第几列。 单下标标识 用一个标识来指出元素在数组中的位置。
输入数组必须用[ ]为输入界限。
数组元素之间必须用逗号或者空格键分隔。
单个元素可以为数值、赋值变量或者表达式。
行与行之间用分号或者换行隔离。
利用M文件创建保存数组矩阵 对于需要经常调用的数组,我们可以用一个 M文件来保存它,便于经常调用。 第一步,在文件编辑器中输入数组的内容; 第二步,保存此文件为.M文件; 第三步,在命令窗口运行此文件,该数组就 会产生在工作空间中。
阵。
伴随矩阵compan (p) MATLAB生成伴随矩阵的函数是compan(p), 其中p是一个多项式的系数向量,高次幂系数排 在前,低次幂排在后
将101~125等25个数填入一个5行5列的表格
中,使其每行每列及对角线的和均为565。
>> m = 100 + magic(5)
生成以向量V为基础向量的范得蒙矩阵。
定数源自文库性采样法
设定总点数下,均匀采样产生一维行数组。
x = linspace (a,b,n)
a为起点,b为终点,n为总点数。
N缺省,默认产生100点。 指令产生(1×n)数组。
定数对数采样法 设定总点数下,经过常用对数采样生成一 维行数组。 x = logspace (a,b,n)
三、数组计算与矩阵计算
数组运算是指无论在数组上施加什么运算, 总认定该种运算对被运算数组中的每一个元 素平等的实施同样的操作。从外观形状和数 据结构上看,二维数组和数学中的矩阵没有 区别。但是,矩阵作为一种变化或者映射算 子的体现,矩阵的运算有着明确而严格的数 学规则。因此,数组运算和矩阵运算在 MATLAB里面是有区别的。
2.数组运算(点运算) 在MATLAB中,数组运算因为其运算符是 在有关算术运算符前面加点,所以又叫点 运算。点运算符有.*、./、.\和.^。两矩阵进
行点运算是指它们的对应元素进行相关运
算,要求两矩阵的维参数相同。
3.逻辑数组 在所有关系表达式和逻辑表达式中,作为输入的 任何非零数都被看做是逻辑真,只有零才被认为 是逻辑假。
全下标(subscript)与单下标 (index)的转换 (index)与 (subscript )是一一对应的,以m×n 矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。 其相互转换关系也可利用sub2ind和ind2sub函 数求得。 >> A = [1 2 3; 4 5 6;7 8 9] >> sub2ind(size(A),1,2) >> [i,j]=ind2sub(size(A),3)
在10的a次方与10的b次方之间产生n个数。 N缺省,默认取50点。 指令产生(1×n)数组。
2.元素的访问与赋值
子数组的访问
访问什么样的子数组,取决于x (index)中
的序号index,index可以是单个正整数或
者是数组,取值必须在[1, end]闭区间内。
子数组的赋值
重新被赋值的数组长度与送入的数据长度
>> A = vander(V)
求4阶希尔伯特矩阵及其逆矩阵。
>> H=hilb(4), H=invhilb(4)
用向量生成一个对称的托普利兹矩阵
>>T=toeplitz(1:6)
求多项式的x3-7x+6的伴随矩阵
>>p=[1,0,-7,6] >>compan(p) 求(x+y)^5的展开式。 >> pascal(6) 矩阵次对角线上的元素1,5,10,10,5,1即为展开 式的系数。
关系运算 MATLAB提供了6种关系运算符:<(小于)、 <=(小于或等于)、>(大于)、>=(大于或等于)、 ==(等于)、~=(不等于)。它们的含义不难理 解,但要注意其书写方法与数学中的不等式 符号不尽相同。
关系运算符的运算法则
当两个比较量是标量时,直接比较两数的大 小。若关系成立,关系表达式结果为1,否 则为0。
>>x=20+(50-20)*rand(5)
(2)均值为0.6、方差为0.1的5阶正态分布随机 矩阵。 >>y=0.6+sqrt(0.1)*randn(5)
5.矩阵信息函数
length (n) 返回最长维的长度
ndims (n) 返回维数
numel (n) 返回元素个数
[a, b] = size (n) 返回每一维的长度
当参与比较的量是两个维数相同的矩阵时, 比较是对两矩阵相同位置的元素按标量关系 运算规则逐个进行,并给出元素比较结果。 最终的关系运算的结果是一个维数与原矩阵 相同的矩阵,它的元素由0或1组成。
当参与比较的一个是标量,而另一个是矩阵 时,则把标量与矩阵的每一个元素按标量关
系运算规则逐个比较,并给出元素比较结果。
矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和AB实现矩阵的加减运算。运算规则是:若A和 B矩阵的维数相同,则可以执行矩阵的加减 运算,A和B矩阵的相应元素相加减。如果A 与B的维数不相同,则MATLAB将给出错误 信息,提示用户两个矩阵的维数不匹配。
矩阵乘法
假定有两个矩阵A和B,若A为m×n矩阵,
B为n×p矩阵,则C=A*B为m×p矩阵。
矩阵的乘方
一个矩阵的乘方运算可以表示成A^x,要
求A为方阵,x为标量。
矩阵除法 在MATLAB中,有两种矩阵除法运算:\和/, 分别表示左除和右除。如果A矩阵是非奇异方 阵,则A\B和B/A运算可以实现。A\B等效于A 的逆左乘B矩阵,也就是inv(A)*B,而B/A等 效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。 对于含有标量的运算,两种除法运算的结果相 同,如3/4和4\3有相同的值,都等于0.75。又 如,设a=[10.5,25],则a/5=5\a=[2.1000 5.0000]。 对于矩阵来说,左除和右除表示两种不同的除 数矩阵和被除数矩阵的关系。对于矩阵运算, 一般A\B≠B/A。
矩阵赋值
双下标赋值
单下标赋值 全元素赋值
x (a, b) = c
x (n) = c x(:)=S(:)
>> x = [1 2 3 4; 5 6 7 8; 9 10 11 12] >> x(3,2) >> x(3,:) >> x(:,2) >> x(8) >> x(6:10) >> x(8:-1:4) >> x(:) =1:12 >> x(3,2)=1 >> x(8)=1
输入数组必须用[ ]为输入界限。 数组元素之间必须用逗号或者空格键分隔。
单个元素可以为数值、赋值变量或者表达式。
冒号生成法 冒号用于表示向量、带有下标的数组以及 用来表示循环。这里冒号表示步长设定。 x = a : inc : b
a为数组起点,b为数组终点,inc为步长。 inc可以省略,缺省时默认为1;inc可以为 正也可以为负。