许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  MATLAB矩阵基础知识:创建、索引与运算详解

MATLAB矩阵基础知识:创建、索引与运算详解

阅读数 4
点赞 0
article_banner

一、数组的创建和操作

1. 矩阵  的输入

>> A=[]A =      [] >> B=[6 5 3]B =      6     5     3 >> C=B'C =      6     5     3

2.调用矩阵

>> A=[1 2 3 4 5]A =      1     2     3     4     5 >> a1=A(1)%访问数组第一个元素a1 =      1 >> a2=A(1:3)%访问数组第1、2、3个元素a2 =      1     2     3 >> a3=A(3:end)%访问数组第3个到最后一个元素a3 =      3     4     5 >> a4=A(end:-1:1)%数组元素反序输出a4 =      5     4     3     2     1 >> a5=A([1 5])%访问数组第1个及第5个元素a5 =      1     5

3.子数组的赋值

>>A=[1 2 3 4 5]A(3)=5A([1 4])=[1 1] A =      1     2     3     4     5  A =      1     2     5     4     5  A =      1     2     5     1     5

二、 MATLAB  常用矩阵函数

1. 矩阵的构造与操作

zeros 生成元素全为0的矩阵

>> zeros(3:3)ans =      0     0     0     0     0     0     0     0     0

ones 生成元素全为1的矩阵

>> ones(2:2)ans =      1     1     1     1

eye 生成单位矩阵

>> eye(2:2)ans =      1     0     0     1

rand 生成随机矩阵

>> rand(3:3)ans =     0.8147    0.9134    0.2785    0.9058    0.6324    0.5469    0.1270    0.0975    0.9575
fliplr矩阵左右翻转
flipud矩阵上下翻转
triu 矩阵的上三角部分
tril矩阵的下三角部分
diag对角矩阵
full将稀疏矩阵化为普通矩阵
sparse生成稀疏矩阵
randn生成正态分布随机矩阵

2. 矩阵运算函数


subspace计算两个子空间的夹角
rref矩阵的行最简形(初等行变换求解线性方程组)
orth正交规范化
null求基础解系(矩阵的零空间)
trace方阵的迹%特征值的和等于迹
det方阵的行列式
rank矩阵的秩
normest稀疏矩阵(或大规模矩阵)的2-范数估计
norm矩阵或向量范数

3. 与线性方程有关的矩阵运算函数


pinv矩阵的广义逆
qr矩阵的正交三角分解
luinc稀疏矩阵的不完全LU分解
ilu稀疏矩阵的不完全LU分解
lu矩阵的LU分解
linsolve矩阵方程组的求解
cholinc稀疏矩阵的不完全Cholesky分解
chol矩阵的Cholesky分解(矩阵的平方根分解)
condest稀疏矩阵1-范数的条件数估计
cond方阵的条件数
inv方阵的逆

4. 与特征值或奇异值有关的矩阵函数


eig方阵的特征值与特征向量
svd矩阵的奇异值分解
eigs稀疏矩阵的一些(默认6个)最大特征值与特征向量
svds矩阵的一些(默认6个)最大奇异值与向量
hess方阵的Hessenberg形式分解
schur方阵的Schur分解

三、数组的常见运算

1.数组的算术运算

dot数组的点积

sum数组元素的乘积之和

>> A=[1 2 3];>> B=[4 5 6];>> C=dot(A,B)C =     32>> D=sum(A.*B)D =     32

2.数组的关系运算

关系运算的运 算法  则如下:

   当两个比较量是标量时,直接比较两个数的大小。若关系成立,则返回的结果为1,否则为0。

   当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。

>> A=[1 2 3 5 7]B=[2 3 5 5 8]A<6A>BF=A==B A =      1     2     3     5     7  B =      2     3     5     5     8  ans =   1×5 logical 数组    1   1   1   1   0  ans =   1×5 logical 数组    0   0   0   0   0  F =   1×5 logical 数组    0   0   0   1   0

3.数组的逻辑运算

在 MATLAB中数组提供了3种数组逻辑 运算符  ,即&(与)、|(或)和~(非)。逻辑运算的运算法则如下:

   如果是非零元素则为真,用1表示;反之是零元素则为假,用0表示。

   当两个比较量是维数相等的数组时,逐一比较两个数组相同位置的元素,并给出比较结果。最终的关系运算结果是一个与参与比较的数组维数相同的数组,其组成元素为0或1。

   与运算(a&b)时,a、b全为非零,则为真,运算结果为1;或运算(ab)时,只要a、b有一个为非零,则运算结果为1;非运算(~a)时,若a为0,运算结果为1,a为非零,运算结果为0。

>> C=A&B %与 D=A|B %或 E=~B  %非 C =   1×5 logical 数组    1   1   1   1   1  D =   1×5 logical 数组    1   1   1   1   1  E =   1×5 logical 数组    0   0   0   0   0

四、矩阵操作

1.创建矩阵

compan(p):生成一个特征 多项式  为p的二维矩阵

   hadamard(k):返回一个阶数为n=2k的Hadamard矩阵,只有当n能被4整除时Hadamard矩阵才存在

   hankel(x):返回一个由向量x定义的 Hankel方阵。该矩阵是一个对称矩阵,其元素为h一x+j-a,第1列为向量x,反三角以下的元素为0

   hankel(x,y):返回一个mXn的Hankel矩阵,它的第1列为向量x,最后一行为向量y
magic  (n):返回一个nXn的魔方矩阵

   pascal(n):返回一个n×n的Pascal矩阵

   rosser:给出Rosser 矩阵,这是一个经典对称特征测试问题,它的大小是8×8

   vander(x):返回一个Vandermonde矩阵,其元素为v,=x"',n为向量x的长度

   wilkinson(n):返回一个m×n的-Wilkinson特征值测试矩阵

(1)希尔伯特矩阵

希尔伯特(Hilbert)矩阵,也称H阵,其元素为H(第i行第j列)/(i+j-1)。由于它是一个条件数差

   的矩阵,所以将它用来作为试验矩阵。

   关于希尔伯特矩阵的指令函数如下:

   hilb(n):用于生成一个n×n的希尔伯特矩阵。

   invhilb(n):用于生成一个nXn的希尔伯特矩阵的逆矩阵整数矩阵。

>> A=hilb(3)A =     1.0000    0.5000    0.3333    0.5000    0.3333    0.2500    0.3333    0.2500    0.2000 >> B=invhilb(3)B =      9   -36    30   -36   192  -180    30  -180   180


(2)托普利兹(Toeplitz)矩阵

   另外一个比较重要的矩阵为托普利兹(Toeplitz)矩阵,它由两个向量定义,一个行向量和一个列向量。对称的托普利兹矩阵由单一向量来定义。

   关于托普利兹矩阵的指令函数如下:

   toeplitz(k,r):用于生成非对称托普利兹矩阵,第1列为k,第1行为r,其余元素等于其左上角元素。

(3)范德蒙行列式

>> A=vander([1 2 3 4])A =      1     1     1     1     8     4     2     1    27     9     3     1    64    16     4     1>> B=vander([1;2;3;4])B =      1     1     1     1     8     4     2     1    27     9     3     1    64    16     4     1>> C=vander(1:.5:3)C =     1.0000    1.0000    1.0000    1.0000    1.0000    5.0625    3.3750    2.2500    1.5000    1.0000   16.0000    8.0000    4.0000    2.0000    1.0000   39.0625   15.6250    6.2500    2.5000    1.0000   81.0000   27.0000    9.0000    3.0000    1.0000

五、改变矩阵的大小

C=[A B]在水平方向 合并  矩阵A和B,而表达式C=[A B]在水平方向合并矩阵A和B,而表达式C=[A;B]在竖直方向合并矩阵A和B。

1.矩阵的合并

>> C=toeplitz(2:5,2:2:8)C =      2     4     6     8     3     2     4     6     4     3     2     4     5     4     3     2
>> a=ones(3,4) b=zeros(3,4) c=[a;b] d=[a b] a =      1     1     1     1     1     1     1     1     1     1     1     1  b =      0     0     0     0     0     0     0     0     0     0     0     0  c =      1     1     1     1     1     1     1     1     1     1     1     1     0     0     0     0     0     0     0     0     0     0     0     0  d =      1     1     1     1     0     0     0     0     1     1     1     1     0     0     0     0     1     1     1     1     0     0     0     0

2.矩阵行列的删除

如果想删除矩阵的第二行

>> A=rand(4,4)A =     0.7922    0.8491    0.7431    0.7060    0.9595    0.9340    0.3922    0.0318    0.6557    0.6787    0.6555    0.2769    0.0357    0.7577    0.1712    0.0462 >> A(2,:)=[]%删除矩阵的第二行A =     0.7922    0.8491    0.7431    0.7060    0.6557    0.6787    0.6555    0.2769    0.0357    0.7577    0.1712    0.0462

六:矩阵元素的查找

1.ind= find  (X) :查找矩阵X中的非零元素,函数返回这些元素的单下标。

>> A=[1 3 0;3 1 0;9 2 4]A =      1     3     0     3     1     0     9     2     4 >> B=find(A)%矩阵中非零元素的下标B =      1     2     3     4     5     6     9 >> C=find(A>=1)C =      1     2     3     4     5     6     9>> D=A(A>=1)%矩阵中大于等于1的元素D =      1     3     9     3     1     2     4 >> A(find(A==0))=10%矩阵中等于0的元素改为10A =      1     3    10     3     1    10     9     2     4

七、矩阵元素的排序

>> A=[1 3 0;3 1 0;9 2 4];B=sort(A);A=[1 3 0;3 1 0;9 2 4];B=sort(A);%矩阵元素按照列进行升序排序C=sort(A,2);%矩阵元素按照行进行升序排序D=sort(A,'descend');%矩阵元素按照列进行降序排序E=sort(A,2,'descend');%矩阵元素按照行进行降序排序>> BCDE=[B C;D E]BCDE =      1     1     0     0     1     3     3     2     0     0     1     3     9     3     4     2     4     9     9     3     4     3     1     0     3     2     0     3     1     0     1     1     0     9     4     2

八、矩阵元素的求和

>> clear all;A=[1 3 0;3 1 0;9 2 4];B=sum(A)%矩阵中元素按照列进行求和C=sum(A,2)%矩阵中元素按照行进行求和D=cumsum (A)%矩阵中各列元素的和E=cumsum (A,2)%矩阵中各行元素的和F=sum(sum (A))%矩阵中所有元素的和B =     13     6     4  C =      4     4    15  D =      1     3     0     4     4     0    13     6     4  E =      1     4     4     3     4     4     9    11    15  F =     23

九、矩阵元素的求积

>> clear all;A= magic(3) B=prod (A)%矩阵各列元素的积C=prod (A,2)%矩阵各行元素的积D=cumprod (A)%矩阵各列元素的积E=cumprod(A,2)%矩阵各行元素的积 A =      8     1     6     3     5     7     4     9     2  B =     96    45    84  C =     48   105    72  D =      8     1     6    24     5    42    96    45    84  E =      8     8    48     3    15   105     4    36    72

十、矩阵的分析

norm 矩阵或向量范数

normest 稀疏矩阵(或大规模矩阵)的2-范数估计

rank 矩阵的秩

det 方阵的行列式

trace 方阵的迹%特征值的和等于迹

null 求基础解系(矩阵的零空间)

orth 正交规范化

rref 矩阵的行最简形(初等行变换求解线性方程组)

subspace 计算两个子空间的夹角

十一、矩阵的分析

chol:Cholesky分解:对称正定矩阵的 Cholesky 分解

   Cholesky分解在MATLAB中用函数chol()来实现,其常用的调用方式如下:

   R = chol(X):其中X为对称正定矩阵,R是上三角矩阵,使得 X=R'·R。如果X是非正定的,则结果将返回出错信息。

   [R,p] = chol(X):返回两个参数,并且不会返回出错信息。当X是正定矩阵时,返回的上三角矩阵R满足X=-R'·R,且p=0;当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数为p-1,且满足X(1:p-1,1:p-1)=R -R    

   cholinc:稀疏矩阵的不完全 Cholesky分解

   lu:矩阵LU分解

   luinc:稀疏矩阵的不完全LU分解

   qr:正交三角分解

   svd:奇异值分解

   gsvd:一般奇异值分解

   schur:舒尔分解


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空