Matlab与工程计算 第二章 Matlab矩阵及其运算
- 格式:pdf
- 大小:255.56 KB
- 文档页数:62
matlab矩阵的运算Matlab矩阵的运算是Matlab编程语言中重要的基础操作之一。
矩阵运算可以实现对矩阵的加减乘除以及其他一系列运算操作。
本文将介绍Matlab中常见的矩阵运算及其应用。
一、矩阵的定义与创建在Matlab中,可以使用矩阵来表示二维的数值数据。
矩阵的元素可以是数字、变量或者表达式。
我们可以通过以下方式定义和创建一个矩阵:1. 直接赋值可以直接使用方括号表示矩阵,每一行的元素用空格或逗号隔开,每一行之间用分号隔开。
例如:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];2. 函数创建Matlab提供了一些函数来创建特定形状的矩阵。
例如:- zeros(m,n):创建一个m行n列的全零矩阵;- ones(m,n):创建一个m行n列的全一矩阵;- eye(n):创建一个n行n列的单位矩阵;- rand(m,n):创建一个m行n列的随机值矩阵。
二、矩阵的基本运算1. 矩阵加法与减法矩阵加法与减法需要满足相同维度的矩阵才能进行运算。
例如:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];B = [9, 8, 7; 6, 5, 4; 3, 2, 1];C = A + B;D = A - B;其中,矩阵C和D分别为A与B的加法和减法结果。
2. 矩阵乘法矩阵乘法需要满足左矩阵的列数等于右矩阵的行数。
例如:A = [1, 2, 3; 4, 5, 6];B = [7, 8; 9, 10; 11, 12];C = A * B;其中,矩阵C为A与B的乘法结果。
3. 矩阵除法矩阵除法可以分为左除和右除两种情况。
左除表示解决Ax = B形式的线性方程组,右除表示解决xB = A形式的线性方程组。
例如:A = [1, 2; 3, 4];B = [5, 6; 7, 8];X = A \ B;其中,X为线性方程组Ax = B的解。
三、矩阵的其他运算1. 矩阵转置矩阵转置是将矩阵的行与列进行互换。
matlab程序设计矩阵及其运算1. 矩阵的定义和表示在matlab中,矩阵是一种常用的数据结构,用于存储和处理多维数据。
矩阵由行和列组成,每个元素都有一个唯一的位置。
在matlab中,可以通过方括号[ ]来定义和表示矩阵。
以下是一些常见的矩阵定义:一维行向量:matlabA = [1 2 3 4 5];一维列向量:matlabB = [1; 2; 3; 4; 5];二维矩阵:matlabC = [1 2 3; 4 5 6; 7 8 9];可以使用size()函数获取矩阵的维度信息,例如:matlab[m, n] = size(C); % m为行数,n为列数2. 矩阵的运算matlab中的矩阵可以进行各种运算,包括基本的加减乘除运算、转置运算、矩阵乘法运算等。
2.1 加法和减法矩阵的加法和减法可以使用+和-运算符进行,例如:matlabA = [1 2 3; 4 5 6; 7 8 9];B = [9 8 7; 6 5 4; 3 2 1];C = A + B; % 矩阵的加法D = A B; % 矩阵的减法2.2 矩阵乘法矩阵乘法在matlab中使用运算符进行,例如:matlabA = [1 2 3; 4 5 6; 7 8 9];B = [9 8 7; 6 5 4; 3 2 1];C = A B; % 矩阵的乘法2.3 转置运算矩阵的转置表示将矩阵的行和列互换,使用'运算符进行,例如:matlabA = [1 2 3; 4 5 6; 7 8 9];B = A'; % A的转置矩阵2.4 矩阵的逆运算矩阵的逆运算是指对于一个可逆矩阵A,存在一个矩阵B,使得A B = B A = I,其中I为单位矩阵。
在matlab中,可以使用inv()函数来求一个矩阵的逆矩阵,例如:matlabA = [1 2; 3 4];B = inv(A); % A的逆矩阵需要注意的是,不是所有的矩阵都有逆矩阵,对于不可逆的矩阵,inv()函数会报错。
如何在Matlab中进行矩阵运算矩阵运算是Matlab中非常重要的一部分,它可以让我们更方便地进行数学建模和算法实现。
在本文中,我们将介绍在Matlab中进行矩阵运算的基本知识和常用函数。
1. 矩阵的定义与表示在Matlab中,可以使用数组来表示矩阵。
我们可以使用一对方括号[],每行之间使用分号; 或者逗号, 来表示不同的矩阵元素。
例如,下面是一个3行3列的矩阵的定义:A = [1, 2, 3; 4, 5, 6; 7, 8, 9];2. 矩阵的基本运算Matlab中的矩阵运算包括加法、减法、乘法和除法等。
下面我们将逐个介绍这些运算。
2.1 矩阵的加法和减法矩阵的加法和减法是逐元素进行的,也就是对应位置的元素相加或相减。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵加法和减法运算符+和-,计算出它们的和和差:C = A + B;D = A - B;运行结果为:D = [-4, -4; -4, -4]2.2 矩阵的乘法矩阵的乘法是按照矩阵乘法的规则进行的。
在Matlab中,我们可以使用*或者dot函数进行矩阵的乘法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];B = [5, 6; 7, 8];我们可以使用矩阵乘法运算符*,计算出它们的乘积:C = A * B;运行结果为:C = [19, 22; 43, 50]除了使用*号,我们还可以使用dot函数进行矩阵的乘法运算。
例如:D = dot(A, B);运行结果为:D = [19, 22; 43, 50]2.3 矩阵的除法矩阵的除法是矩阵乘法的逆运算。
在Matlab中,我们可以使用/或者inv函数进行矩阵的除法运算。
例如,我们有两个矩阵A和B:A = [1, 2; 3, 4];我们可以使用矩阵除法运算符/,计算出它们的除法结果:C = A / B;运行结果为:C = [-0.3333, -0.6667; -0.1667, -0.3333]除了使用/号,我们还可以使用inv函数进行矩阵的除法运算。
第2章Matlab矩阵及其运算2.1 Matlab变量2.2 Matlab数值矩阵2.3 运算符2.4 基本数学函数2.5 稀疏矩阵2.6 矩阵分析2.8 字符串2.9 结构数据2.10 细胞矩阵2.1 Matlab变量1. 变量命名规则在MATLAB 6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
在MATLAB中,变量名区分字母的大小写。
2.变量赋值变量=表达式3.预定义变量i,j,pi,eps,realmin,realmax,inf,NaN预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。
内存变量的管理1.指令操作法whowhosclear2. 现场菜单操作法3. 内存变量文件(.mat)save [文件名] [变量名表] [-append][-ascii] load [文件名] [变量名表] [-ascii]help savehelp load数值数据的输出格式MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。
在一般情况下,MATLAB内部每一个数值数据元素都是用双精度数来表示和存储的。
数据输出时用户可以用format命令设置或改变数据输出格式。
format 命令的格式为:format格式符其中格式符决定数据的输出格式help format2.2 MATLAB数值矩阵2.2.1 矩阵的建立1.直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。
具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
2.利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
下面通过一个简单例子来说明如何利用M文件创建矩阵。
例2-2 利用M文件建立Mymat矩阵。
(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(2) 把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。
(3) 在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自动建立一个名为MYMAT的矩阵,可供以后使用。
3.利用冒号表达式建立一个向量冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。
在MATLAB中,还可以用linspace函数产生行向量。
其调用格式为:linspace(a,b)linspace(a,b,n)其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。
logspace(a,b)logspace(a,b,n)4.建立大矩阵大矩阵可由方括号中的小矩阵或向量建立起来。
5.使用repmat函数repmat(A,[M N P ...])repmat(A,M,N, P, ...)6. 使用blkdiag函数|A 0 .. 0 |Y =blkdiag(A,B,...) produces |0 B .. 0 ||0 0 .. |7.使用meshgrid函数[X,Y] = meshgrid(x,y)2.2.3 特殊矩阵1.通用的特殊矩阵A=zeros(N)A=zeros(M,N,P,…)A=zeros([M N P…])A=zeros(size(A))oneseye例2-3 分别建立3×3、3×2和与矩阵A同样大小的零矩阵。
rand:The rand function generates arrays of randomnumbers whose elements are uniformly distributed in theinterval (0,1).randn:产生均值为0,方差为1的标准正态分布随机矩阵。
例2-4 建立随机矩阵:(1) 在区间[20,50]内均匀分布的5阶随机矩阵。
(2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。
命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)2.用于专门学科的特殊矩阵(1) 魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。
对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。
MATLAB提供了求魔方矩阵的函数magic(n)其功能是生成一个n阶魔方阵。
例2-5 将101~125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。
(2) 范得蒙矩阵范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。
可以用一个指定向量生成一个范得蒙矩阵。
在MATLAB中,函数vander(V)生成以向量V为基础向量的范得蒙矩阵。
(3) 希尔伯特矩阵hilb(N)is the N by N matrix with elements 1/(i+j-1), which is a famous example of a badly conditioned matrix.使用一般方法求逆会因为原始数据的微小扰动而产生不可靠的计算结果。
MATLAB中,有一个专门求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。
例2-6 求4阶希尔伯特矩阵format rat %以有理形式输出H=hilb(4)H=invhilb(4)(4) 托普利兹矩阵托普利兹(Toeplitz)矩阵除第一行第一列外,其他每个元素都与左上角的元素相同。
toeplitz(x,y)toeplitz(x)(5) 帕斯卡矩阵我们知道,二次项(x+y)n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。
由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。
pascal(n)2.2.3 Size and dimensions of matrices1.Size of a matrixa row vector [M N P…]S=size(A)2. Length of a matrixL=length(A)length(A)等价于max(size(A))3.Dimension of a matrixa scalar >2Dims=ndims(A)length(size(A))等价于ndims(A)4.Empty matrixA=[]2.2.2 矩阵的拆分1.矩阵元素的引用下标(Subscript )A(3,2)=200序号(Index)Index与Subscript的对应关系对m×n矩阵A为例,A(i,j)等价于A((j-1)*m+i)IND = sub2ind(SIZ,I1,I2,...,In)[I1,I2,I3,...,In] = ind2sub(SIZ,IND)2.矩阵拆分(1) 利用冒号表达式获得子矩阵A(:,j)A(i,:)A(i,j)A(i:i+m,:)A(:,k:k+m)A(i:i+m,k:k+m)A(i:end,k:k+m)A(:)A(:,:,:,…)(2) 利用Index获得子矩阵A(M) (M是一个整数矩阵)(3) 利用逻辑矩阵获得子矩阵A(M) (M是一个逻辑矩阵)(4) 利用空矩阵删除矩阵的元素在MATLAB中,定义[]为空矩阵。
给变量X赋空矩阵的语句为X=[]。
注意,X=[]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。
(5) 矩阵维数和大小的变换在矩阵总元素保持不变的前提下,该函数按照Index的顺序将矩阵A 重新排成m×n的二维矩阵。
B = reshape(A,m,n)B = reshape(A,m,n,p,...)B = reshape(A,[m n p ...])B = reshape(A,...,[],...)B = reshape(A,siz)2.3 Matlab运算符和表达式Arithmetic operators;Relational operators ;Logical operatorsRelational operators 运算法则为:(1)Scalar to scalar(2)Matrix to matrix(3)Scalar to matrix(4)Matrix to scalarLogical operatorsMATLAB offers three types of logical operator and functions.Element-wise--operate on corresponding elements of logical arrays.& | ~ xorany(A) all(A)Note MATLAB converts any finite nonzero, numeric values used as inputs to logical expressions to logical 1, or true.Bit-wise--operate on corresponding bits of integer values or arrays.bitand(a,b)bitor(a,b)bitcmp(a,b)bitxor(a,b)Short-circuit--operate on scalar, logical expressions.&& | |e.g. x = (b ~= 0) && (a/b > 18.5)(3) 利用逻辑矩阵获得子矩阵A(M) (M是一个逻辑矩阵)A(logical expression) e.g. A(A>3)Index = find(A)[i,j] = find(A)[i,j,v] = find(A)Index = find(logical expression)[i,j] = find(logical expression)[i,j,v] = find(logical expression)A(find(A>3))2.4 基本数学函数(Elementary math functions)MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。
1.三角函数(Trigonometric)2.指数函数(Exponential)3.复数函数(Complex)4.圆整和求余函数(Rounding and remainder)5.Discrete Math6.特殊函数(Specialized math functions)7.Coordinate System Conversion8.矢量函数(Vector functions)1. 三角函数(Trigonometric)acos反余弦acosh反双曲余弦acot反余切acoth反双曲余切acsc反余割acsch反双曲余割asec反正割asech反双曲正割asin反正弦asinh反双曲正弦atan反正切atanh反双曲正切atan2 四象限反正切cos余弦cosh双曲余弦cot 余切coth双曲余切csc余割csch双曲余割sec 正割sech双曲正割sin 正弦sinh双曲正弦tan 正切tanh双曲正切2. 指数函数(Exponential)exp 指数log 自然对数log10 常用对数log2 以2 为底的对数 pow2 2 的幂sqrt平方根3. 复数函数(Complex)abs 绝对值angle 相角conj 复数共轭imag复数虚部real 复数实部4. 圆整和求余函数(Rounding and remainder)ceil 朝正无穷大方向取整fix 朝零方向取整floor 朝负无穷大方向取整round 四舍五入取整sign 符号函数mod(X,Y) 模数求余rem(X,Y) 求余数So long as operands X and Y are of the same sign, the function mod(X,Y) returns the same result as does rem(X,Y).However, for positive X and Y, mod(-X,Y) = rem(-X,Y)+Y5. Discrete Math (e.g., Prime Factors)factor Prime factors factorialFactorial functiongcd Greatest common divisorisprime True for prime numberslcm Least common multiplenchoosek All combinations of N elements taken K at a time perms All possible permutationsprimes Generate list of prime numbersrat, rats Rational fraction approximation6. 特殊函数(Specialized math functions) Specialized Math7. Coordinate System Conversion Cartesian polar sphericalcart2pol 直角坐标变为柱(或极)坐标cart2sph 直角坐标变为球坐标pol2cart柱(或极)坐标变为直角坐标sph2cart 球坐标变为直角坐标8. 矢量函数(Vector functions) cross 向量叉积dot 向量内积2.4 稀疏矩阵2.4.1 矩阵存储方式MATLAB的矩阵有两种存储方式:完全存储方式和稀疏存储方式。