当前位置:文档之家› 第三讲向量和矩阵的运算

第三讲向量和矩阵的运算


zeros(size(A))
%产生一个与矩阵A同样
大小的零矩阵
【练习2】 试建立以下随机矩阵: (1) 在区间[20,50]内均匀分布的5阶随机矩阵。 (2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。
命令如下: >>x=20+(50-20)*rand(5) >>y=0.6+sqrt(0.1)*randn(5)
>> v=(10:-1:1)
v=
10
9
8
7
6
5
4
3
2
1
向量
数列中的元素不但可以是整数,也可以取负数和 小数,在命令窗口输入代码,观察结果:
>>b=(-4.4:4.4)
Matlab默认数列差值为整数1,在默认差值情况 下,数列为递增数列;大家可以自行设置p > q的情 况,但此时需要将差值设置为负数,否则系统会显示: 生成的是空矩阵。
自己动手 试以阶为3的魔术矩阵熟悉上述操作
矩阵操作
矩阵的转置与共轭转置
’ 共轭转置 .’ 转置,矩阵元素不取共轭
点与单引号之间不能有空格!
例:>> A=[1 2;2i 3i]
>> B=A’ >> C=A.’
矩阵操作
改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等!
① log 是自然对数,即以 e 为底数 ② mod(x,y) 结果与 y 同号,rem(x,y) 则与 x 同号 ③ max 等函数的参数是矩阵时,是作用在矩阵各列上
拼接矩阵
矩阵的拼接是指两个或者两个以上的单个 矩阵,按一定的方向进行连接,生成新的矩 阵。从本质上说,矩阵的拼接就是一种创建 矩阵的特殊方法,区别在于基础元素是原始 矩阵,目标是新的合并矩阵。本节主要介绍 矩阵拼接的两种方法,一是利用矩阵生成符 [ ],另一种是调用矩阵拼接函数。
参与运算的对象必须具有相同的形状!
数与数组的点幂
例:x=[1 2 3]; y=[4 5 6];
x.^y =[1^4,2^5,3^6]=[1,32,729] x.^2 =[1^2,2^2,3^2]=[1,4,9]
2 .^x = ? 2 .^[x;y]= ?
.^ 前面留个空格
Matlab中的所有 标点符号必须在 英文状态下输入
向量与矩阵运算
矩阵是所有MATLAB运算的基础,大家如果要 实现科学运算、程序设计、特性绘制等目标,必 须要确定矩阵的类型,并建立矩阵。MATLAB中 创建一个矩阵可以有两种常用的方法:
一、直接输入矩阵元素。
二、调用矩阵创建函数。
输入元素创建简单矩阵
对于简单的矩阵,特别是元素数目不多的矩阵, 逐个输入矩阵元素是最常用、最便捷的矩阵创建方 法,其遵循以下3条原则:
x=
5
>> ndims(x)
ans =
2
>> size(x)
ans =
1
1
% 查看x的维数 %查看行、列维的数值
空矩阵
MATLAB中为了表示和操作的方便,引入了 “空矩阵”的概念,其含义是至少一维的数值为0 的矩阵。空矩阵可以是、和(n为正整数)。空矩 阵不是全0矩阵,大家可以通过如下指令建立一个 空矩阵a,再利用whos指令查看其名称、大小和数 据类型。
diag(X) 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩 阵
tril(A) 提取一个矩阵的下三角部分
triu(A) 提取一个矩阵的上三角部分 rand(m,n) 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为
rand(n) randn(m,n) 产生均值为0,方差为1的标准正态分布随机矩阵
A=
1
3
5
பைடு நூலகம்
7
9 11
13 15 17
矩阵操作
矩阵的旋转
fliplr(A) 垂直方向为轴翻转矩阵 flipud(A) 水平方向为轴翻转矩阵 rot90(A) 逆时针旋转 90 度;
rot90(A,k) 逆时针旋转 k×90 度
例:>> A=[1 2 3;4 5 6]
>> B=fliplr(A) >> C=flipud(A) >> D=rot90(A), E=rot90(A,-1)
向量与矩阵运算
向量与矩阵的生成(续)
矩阵的生成 ✓ 直接输入: A=[1, 2, 3; 4, 5, 6; 7, 8, 9] ✓ 由向量生成 ✓ 通过编写m文件生成 ✓ 由函数生成
例:>> x=[1,2,3];y=[2,3,4];
>> A=[x,y], B=[x;y]
例:>> C=magic(3)
矩阵的数组运算
数组运算:对应元素进行运算
数组运算包括:点乘、点除、点幂 相应的数组运算符为:“.* ” ,“./ ”, “.\ ”和“ .^ ”
点与算术运算符之间不能有空格!
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];
>> C=A.*B; D=A./B; E=A.\B; F=A.^B;
如果p和q的距离是非整数,Matlab仍然默认差 为1,直到递增量加1超过数列尾数时停止。但是大家 设置差值时,递增量可以任意取值。
标量
标量是行列数都是1的特殊矩阵,任意以矩阵 形式表示的单个实数或复数,称之为标量。如下 实数x就是一个标量。实数5的维数为2,即行和 列;且各维数值都为1。
>> x=5
数学实验
向量与矩阵运算
向量
向量是行数或列数为1的特殊矩阵,其一般显示为 1n或n1的数列。用户在构造新矩阵,以及对矩阵 进行访问、修改等操作时,常用到向量数列。
MATLAB提供了生成等差向量数列的符号-冒号, 例如:(p:q)生成从p到q,差为1的递增向量数列。 例如:创建10~1的等差递减数列,在命令窗口输入 代码及执行结果如下。
矩阵操作
查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
例:>> A=[1 2 3; 4 5 6]
>> size(A) >> size(A,1) >> size(A,2)
length(x) 返回向量 X 的长度 length(A) 等价于 max(size(A))
【例】在矩阵尺寸之外增加一个或多个元素, 改变原矩阵的大小。 本例目的:理解用添加元素来扩大矩阵尺寸的方法
改变矩阵尺寸
缩小矩阵的尺寸
如果要让矩阵“变小”,也就是删除矩阵的 某行或某列,只要把目标行或列赋予一个空矩 阵[ ]即可。 【例】删除4阶随机矩阵的第3列
本例目的:理解缩小矩阵尺寸的方法
此外,还可利用一般向量和end运算符等来表示矩 阵下标,从而获得子矩阵。end表示某一维的末尾元 素下标。
【练习】提取矩阵 A 的1,3,5列。
A=[1,2,3,4,5,6;7,8,9,10,11,12; 13,14,15,16,17,18];
>>A1=A(:,[1,3,5]) % 方法一
>>A(:,[2,4])=[ ] % 方法二:利用空阵
运用矩阵构造符[ ]包含所创建矩阵的所有元素;
使用逗号“ ,”或者空格“ ”分隔矩阵的列;
使用分号“ ;”或者回车键分隔矩阵的行。
向量与矩阵运算
向量与矩阵的生成
向量的生成 ✓直接输入: a=[1,2,3,4] ✓ 冒号运算符
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
本例目的:熟悉矩阵的拼接方法和不同方向上拼接 的区别。
改变矩阵尺寸
矩阵的尺寸又称矩阵的大小。在MATLAB 中,用户可以方便地对矩阵的尺寸进行扩大和 缩小,扩大矩阵的主要方式是拼接和添加元素, 缩小矩阵的方式是删除矩阵中的某行或某列元 素。
改变矩阵尺寸
扩大矩阵的尺寸
矩阵拼接 在矩阵尺寸之外添加元素
矩阵操作
提取矩阵的部分元素: 冒号运算符
A(:) A的所有元素 A(:,:) 二维矩阵A的所有元素 A(:,k) A的第 k 列, A(k,:) A的第 k 行 A(k:m) A的第 k 到第 m 个元素 A(:,k:m) A的第 k 到第 m 列组成的子矩阵
自己动手
A(:) 与 A(:,:) 的区别 ? 如何获得由 A 的第一、三行和第一、二列组成的子矩阵?
>> C=A*B
矩阵基本运算
矩阵的除法:/、\ 右除和左除
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B
通常,矩阵除法可以理解为
X=A\B <==> A*X=B X=B/A <==> X*A=B 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除
①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列中的所有元素。
相关主题