180 likes | 368 Views
Matlab 在线性代数中的应用. 内容. 一、向量与矩阵的生成 二、常见矩阵的生成函数 三、矩阵操作:矩阵的提取,转置,旋转,改变矩阵的形状,查看矩阵的大小 四、矩阵的基本运算:矩阵的加减,矩阵的普通乘法,矩阵的乘方,矩阵的除法,矩阵与数的运算,矩阵的数组运算, 五、矩阵的逆运算 inv 六、矩阵的秩 rank ; 七、矩阵的行列式 det ;. 一、向量与矩阵的生成. 1 、 向量的生成 直接输入: a=[1,2,3,4] 冒号 运 算符 从矩阵中抽取行或列. 例 :. >> a = [1:4] >> b = [0:pi/3:pi]
E N D
内容 • 一、向量与矩阵的生成 • 二、常见矩阵的生成函数 • 三、矩阵操作:矩阵的提取,转置,旋转,改变矩阵的形状,查看矩阵的大小 • 四、矩阵的基本运算:矩阵的加减,矩阵的普通乘法,矩阵的乘方,矩阵的除法,矩阵与数的运算,矩阵的数组运算, • 五、矩阵的逆运算inv • 六、矩阵的秩rank; • 七、矩阵的行列式det;
一、向量与矩阵的生成 • 1、向量的生成 • 直接输入:a=[1,2,3,4] • 冒号运算符 • 从矩阵中抽取行或列 例: >>a = [1:4] >>b = [0:pi/3:pi] >>c = [5:-2:0]
2、矩阵的生成 • 直接输入:A=[1, 2, 3; 4, 5, 6; 7, 8, 9] • 规则:矩阵元素放在方括号中,元素之间以空格或逗号分隔,不同行以分号或回车分隔,语句结尾用回车或逗号将显示结果 • 由向量生成 • 通过编程生成 • 由函数生成 例: >>x = [1,2,3]; y = [2,3,4]; >>A = [x,y] >>B = [x;y]
如:输入 f1=ones(3, 2) 输入 f2=zero(2, 3) 显示 f1= 1 1 显示 f2= 0 0 0 1 1 0 0 0 1 1 输入 f3=magic(3) 输入 f4=eye(2) 显示 f3= 8 1 6 显示 f4= 1 0 3 5 7 0 1 4 9 2 输入f5= rand(4)
自己动手 A(:) 与A(:,:) 的区别? 如何获得由A 的第一、三行和第一、二列组成的子矩阵? 三、矩阵操作 • 1、提取矩阵的部分元素: 冒号运算符 • A(3) A的第3个元素 • A(2,3) A的第2行第3列的元素 • A(:)将A按列的方向拉成长长的一列 • A(:,:)矩阵A 的所有元素 • A(:,k) A 的第k 列 • A(k,:) A 的第k 行 • A(k:m) A 的第k 到第m 个元素 • A(:,k:m) A 的第k 到第m 列组成的子矩阵
’共轭转置 • .’转置,矩阵元素不取共轭 • 2、矩阵的转置与共轭转置 点与单引号之间不能有空格! 例: >>A = [1, 2; 3i, 4i] >>B = A' >>C = A.'
3、矩阵的旋转 • fliplr(A)左右旋转left right • flipud(A)上下旋转 up down • 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) 注意矩阵旋转与转置的区别!
4、改变矩阵的形状:reshape(A,m,n) 将矩阵元素按 列方向进行重新排列成一个 m×n的新矩阵 新矩阵的元素个数必须与原矩阵元素个数相等! 例: >>A = [1,2,3; 4,5,6; 7,8,9; 10,11,12] >>B = reshape(A,4,3) >>C = reshape(A,2,6) × >>C = reshape(A,5,2)
6、查看矩阵的大小:size、length • 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)) >>length(A) >>x = [5:2:10]; length(x)
四、矩阵基本运算 • 1、矩阵的加减:对应分量进行运算 参与加减运算的矩阵具有 相同的维数!size(A)=size(B) 如果其中一个变量是标量,则会自动扩展成各元素均取此标量值的同阶次矩阵。 例: >>A = [1,2; 3,4]; B = [5,6; 7,8] >>C = A+B >>D = B-A • 2、矩阵的普通乘法 参与运算的矩阵须满足线性代数中矩阵相乘的原则! 例: >>A = [1,2,3; 4,5,6]; B = [2,1; 4,3] >>C = B*A
若 A 是方阵,p 不是正整数 A^p的计算涉及到 A 的特征值分解,即若 A = V*D*V-1 则A^p=V*(D.^p)/V • 3、矩阵的乘方 A 是方阵,p 是正整数 A^p表示 A的 p次幂,即 p个 A相乘。
4、矩阵的除法:/、\ 右除和左除 • 若 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 列数相等时可进行右除
5、矩阵与数的运算 • 加减:矩阵的每个元素都与数作加减运算 • 数乘:矩阵的每个元素都与数作乘法运算 • 矩阵除以一个数:每个元素都除以这个数 • 点幂: • 底为矩阵,指数为标量 • 底为标量,指数为矩阵
6、矩阵的数组运算:对应元素进行运算 • 数组运算包括:点乘、点除、点幂 • 相应的四个数组运算符为:.* ./ .\ .^ 点与算术运算符之间不能有空格! 例: >>A = [1,2,3; 4,5,6]; B = [3,2,1; 6,5,4]; >>C = A.*B >>D = A./B >>E = A.^B 参与运算的对象必须具有相同的形状!
五、矩阵的逆运算 • 用函数inv实现求矩阵的逆矩阵。如果det(A)等于或很接近零,Matlab会提示出错 • 由函数pinv实现矩阵的伪逆运算。 例 a=[1 2 0;2 5 -1;4 10 -1] b=inv(a);
六、矩阵的秩 • 用函数rank求矩阵的秩。 例:a=[1 2 0;2 5 -1;4 10 -1]; b=rank(a) b = 3 七、矩阵行列式 • 用函数det求矩阵的行列式。 例:a=[1 2 0;2 5 -1;4 10 -1]; b=det(a)