MATLAB:矩阵(基础知识)

这篇具有很好参考价值的文章主要介绍了MATLAB:矩阵(基础知识)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数组的创建和操作

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)=5
A([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<6
A>B
F=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的元素改为10

A =

     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:舒尔分解
                               文章来源地址https://www.toymoban.com/news/detail-401299.html

到了这里,关于MATLAB:矩阵(基础知识)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Js水几个基础知识点:数组的操作,字符串和数组之间的互转,持续补充,欢迎关注

    一、插入 / 删除元素: 我们就不从创建开始讲了,那个太基础了,js创建数组一般都直接let arr = […,…,…],有部分仁兄喜欢new Array(…, …, …),这样看起来可能高级点,结果是一样的哈。 这里我们直接来讨论插入元素: 1、在末尾插入 / 删除元素(push / pop,操作原数组)

    2024年02月09日
    浏览(59)
  • 数组基础知识二

    特别说明 一维数组的定义(对数组空间进行清理,置0,不会产生随机值):数组在使用前要先定义;告诉编译器数组元素的类型;编译器会给这个数组预先分配连续的存储空间;定义的格式为:元素类型名 数组名[数组长度]。 1、一维数组的遍历 :在操作数组时,经常需要

    2024年02月05日
    浏览(33)
  • 矩阵的基础知识

    一、矩阵的定义  矩阵:一个由m×n个元素排成的m行n列的表。 矩阵的常规存储:将矩阵描述成一个二维数组。 矩阵的常规存储的特点:1.可以对其元素进行随机存取 2.矩阵的运算非常简单 3.存储密度为1  矩阵的压缩存储:1.为多个相同的非零元素只分配一个存储空间 2.对零元

    2024年02月06日
    浏览(44)
  • c语言基础知识帮助理解(详解数组)

    前面梳理完函数和递归的知识后,来进行数组知识的梳理 对函数有疑惑的同学,可以看我之前的文章:c语言基础知识帮助理解(详解函数)_总之就是非常唔姆的博客-CSDN博客  c语言基础知识帮助理解(函数递归详解)_总之就是非常唔姆的博客-CSDN博客 想做点游戏的同学可以

    2024年02月14日
    浏览(39)
  • 探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)

    欢迎阅读本篇博客,我们将深入探讨MATLAB语言的基础知识与实用技能,旨在帮助初学者、初中级MATLAB程序员以及在校大学生系统地掌握这门强大的科学计算与数据可视化工具。 一、MATLAB的基础知识 1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环 二、MATLAB的实用技能

    2024年03月12日
    浏览(62)
  • 知识储备--基础算法篇-矩阵

    第一题上来就跪了,看了官方答案感觉不是很好理解,找了一个比较容易理解的。 还有一个暴力方法,其中有几个知识点, list的[]中有三个参数,用冒号分割 list[param1:param2:param3] param1,相当于start_index,可以为空,默认是0 param2,相当于end_index,可以为空,默认是list.size p

    2024年02月10日
    浏览(32)
  • 【一】MATLAB基础知识

    1 数值数据类型的分类 整型 无符号整数:无符号8位整数、无符号16位整数、无符号32位整数、 无符号64位整数。 带符号整数:带符号8位整数、带符号16位整数、带符号32位整数、 带符号64位整数。 无符号8位整数数据范围:00000000-11111111(0-2的8次方-1)。 带符号8位整数数据范

    2023年04月22日
    浏览(35)
  • matlab基础知识

    本文参考了matlab数学建模一书 logspace(x1,x2,n)函数产生一组等比数列,第一个数是 1 0 x 1 10^{x_1} 1 0 x 1 ​ ,最后一个数是 1 0 x 2 10^{x_2} 1 0 x 2 ​ ,n是n个元素,默认是50;eg: 这里第一个数是 1 0 0 = 1 10^{0}=1 1 0 0 = 1 ,最后一个数是 1 0 lg ⁡ 32 = 32 10^{lg 32}=32 1 0 l g 3 2 = 3 2 ,一共

    2023年04月23日
    浏览(37)
  • 【MATLAB图解教程1】MATLAB基础知识

     ⭐️ 引言 ⭐️          大家好哇!马上就要数学建模比赛了,这周Sonesang将为大家带来 MATLAB基础教程 ,希望在准备数学建模的过程中,能够和大家一起分享学习过程!  📒博客首页:Sonesang的博客 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 ❤️ :热爱Java与算法学习,期待

    2024年02月03日
    浏览(34)
  • MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 本文总结MATLAB编程时的一些基本操作,适用于新手小白,主要包括矩阵相乘、生成矩阵、矩阵基本操作、数组索引、最大最小操作符。 线性代数的两个矩阵相乘:用符号 “ * ” 例如A*B得到A与B的矩阵相

    2024年02月04日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包