MATLAB教程二:MATLAB矩阵处理

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

2.1 特殊矩阵

通用的特殊矩阵:

  • zeros函数:产生全0矩阵,即零矩阵。
  • ones函数:产生全1矩阵,即幺矩阵。
  • eye函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
  • rand函数:产生(0,1)区间均匀分布的随机矩阵。
  • randn函数:产生均值为0,方差为1的标准正态分布随机矩阵。
>> zeros(2)
ans =
     0     0
     0     0
>> ones(2)
ans =
     1     1
     1     1
>> eye(4)
ans =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
>> rand(3)
ans =
    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575
>> randn(3)
ans =
    2.7694    0.7254   -0.2050
   -1.3499   -0.0631   -0.1241
    3.0349    0.7147    1.4897

专门学科的特殊矩阵:

魔方矩阵:n 阶魔方阵由1,2,3,…,n2 共n2 个整数组成,且每行、每列以及主、副对角线上各 n 个元素之和都相等。

  • magic(n) 函数:产生一个 n 阶魔方矩阵。
>> M=magic(3)
M =
     8     1     6
     3     5     7
     4     9     2

范德蒙矩阵

对于向量v= [v1,v2,…,vn], 范得蒙矩阵的一般形式为:
V = [ v 1 n − 1 ⋯ v 1 2 v 1 1 v 1 0 v 2 n − 1 ⋯ v 2 2 v 2 1 v 2 0 v 3 n − 1 ⋯ v 3 2 v 3 1 v 3 0 ⋮ ⋱ ⋮ ⋮ ⋮ v n n − 1 ⋯ v n 2 v n 1 v n 0 ] V= \left[ \begin{matrix} v^{n-1}_1 &\cdots& v^2_1 & v^1_1 & v^0_1 \\ v^{n-1}_2 &\cdots& v^2_2 & v^1_2 & v^0_2 \\ v^{n-1}_3 &\cdots& v^2_3 & v^1_3 & v^0_3 \\ \vdots &\ddots &\vdots &\vdots &\vdots \\ v^{n-1}_n &\cdots& v^2_n & v^1_n & v^0_n \end{matrix} \right] V= v1n1v2n1v3n1vnn1v12v22v32vn2v11v21v31vn1v10v20v30vn0
即向量 v 各元素的零次方,倒数第二列为指定的向量 v, 即向量 v 各元素的一次方, 其他各列是其后列与倒数第二列的点乘积。

  • vander(v) 函数:生成以向量 v 为基础的范得蒙矩阵。
>> A=vander(1:5)
A =
     1     1     1     1     1
    16     8     4     2     1
    81    27     9     3     1
   256    64    16     4     1
   625   125    25     5     1

希尔伯特矩阵

n 阶希尔伯特(Hilbert)矩阵的一般形式为:
H = [ 1 1 / 2 ⋯ 1 / n 1 / 2 1 / 3 ⋯ 1 / ( n + 1 ) ⋮ ⋱ ⋮ ⋮ 1 / n 1 / ( n + 1 ) ⋯ 1 / ( 2 n − 1 ) ] H= \left[ \begin{matrix} 1 &1/2 &\cdots& 1/n \\ 1/2 &1/3 &\cdots& 1/(n+1) \\ \vdots &\ddots &\vdots &\vdots \\ 1/n &1/(n+1) &\cdots& 1/(2n-1) \end{matrix} \right] H= 11/21/n1/21/31/(n+1)1/n1/(n+1)1/(2n1)

  • hilb(n) 函数:生成 n 阶希尔伯特矩阵的函数。
>> format rat    %将显示形式改为分数显示
H=hilb(4)
H =
       1              1/2			  1/3             1/4
       1/2			  1/3             1/4			  1/5
       1/3            1/4             1/5             1/6
       1/4            1/5             1/6			  1/7

帕斯卡矩阵

矩阵如下:

H = [ 1 1 1 1 1 1 1 2 3 4 5 6 1 3 6 10 15 21 1 4 10 20 35 56 1 5 15 35 70 126 1 6 21 56 126 252 ] H= \left[ \begin{matrix} 1 &1 &1 &1 &1 &1 \\ 1 &2 &3 &4 &5 &6 \\ 1 &3 &6 &10 &15 &21 \\ 1 &4 &10 &20 &35 &56 \\ 1 &5 &15 &35 &70 &126\\ 1 &6 &21 &56 &126&252\\ \end{matrix} \right] H= 111111123456136101521141020355615153570126162156126252

  • pascal(n) 函数:生成一个 n 阶帕斯卡矩阵。
>> P=pascal(5)
P =
	1	1	1	1	1 
	1 	2 	3	4	5 
    1	3 	6	10	15 
	1	4 	10	20	35 
	1	5 	15	35	70

2.2 矩阵变换

对角阵:

对角阵:只有对角线上有非零元素的矩阵。

数量矩阵:对角线上的元素相等的对角矩阵。

单位矩阵:对角线上的元素都为1的对角矩阵。

矩阵的对角线:与主对角线平行,往上为第1条、第2条、一直到第 n 条对角线,往下为第 -1条、-2条、一直到 -n 条对角线。主对角线为第 0 条对角线。

提取矩阵的对角线元素:

  • diag(A):提取矩阵 A 主对角线元素,产生一个列向量。

  • diag(A,k):提取矩阵 A 第 k 条对角线的元素,产生一个列向量。

构造矩阵:

  • diag(V):以向量 V 为主对角线元素,产生对角矩阵。

  • diag(V,k):以向量 V 为第 k 条对角线元素,产生对角矩阵。

>> D=diag(1:3)         %以1到3为主对角线元素,产生对角矩阵
D =
     1     0     0
     0     2     0
     0     0     3
>> A=diag(D)           %提取矩阵D的对角线元素,产生一个列向量
A =
     1
     2
     3

三角阵:

上三角阵:矩阵的对角线以下的元素全为零的矩阵。

下三角阵:对角线以上的元素全为零的矩阵。

上三角矩阵

  • triu(A):提取矩阵 A 的主对角线及以上的元素。

  • triu(A,k):提取矩阵 A 的第 k 条对角线及以上的元素。

下三角矩阵

  • tril(A):提取矩阵 A 的主对角线及以下的元素。

  • tril(A,k):提取矩阵 A 的第 k 条对角线及以下的元素。

>> triu(ones(4),-1)
ans =
     1     1     1     1
     1     1     1     1
     0     1     1     1
     0     0     1     1
>> tril(ones(4),1)
ans =
     1     1     0     0
     1     1     1     0
     1     1     1     1
     1     1     1     1

矩阵的操作:

矩阵的转置:转置运算符是小数点后面接单引号( .’ )。

>> A=[1,2,3;4,5,6;7,8,9]
A =
     1     2     3
     4     5     6
     7     8     9
>> A.'
ans =
     1     4     7
     2     5     8
     3     6     9

矩阵的旋转

  • rot90(A,k):将矩阵 A 逆时针方向旋转 90º 的 k 倍,当 k 为1时可省略。
>> A=[1 3 2;-3 2 1;4 1 2]
A =
     1     3     2
    -3     2     1
     4     1     2
>> rot90(A,2)
ans =
     2     1     4
     1     2    -3
     2     3     1

矩阵的翻转:对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依此类推。

  • fliplr(A):对矩阵 A 实施左右翻转
  • flipud(A):对矩阵 A 实施上下翻转。
>> A=[1 3 2;-3 2 1;4 1 2]
A =
     1     3     2
    -3     2     1
     4     1     2
>> B=fliplr(A)
B =
     2     3     1
     1     2    -3
     2     1     4
>> B=flipud(A)
B =
     4     1     2
    -3     2     1
     1     3     2

矩阵的求逆:对于一个方阵 A,如果存在一个与其同阶的方阵 B,使得 AB=BA=I (I为单位矩阵),则称 B 为 A 的逆矩阵,当然,A 也是 B 的逆矩阵。

  • inv(A):求方阵 A 的逆矩阵。

例:用求逆矩阵的方法解线性方程组。
{ x + 2 y + 3 z = 5 x + 4 y + 9 z = − 2 x + 8 y + 27 z = 6 \begin{cases} x +2y+3z=5 \\ x+4y+9z=-2 \\ x+8y+27z=6 \end{cases} x+2y+3z=5x+4y+9z=2x+8y+27z=6
在线性方程组Ax=b两边各左乘 A-1,得 x=A-1b。

>> A=[1 2 3;1 4 9;1 8 27];
>> B=[5;-2;6];
>> X=inv(A)*B
X =
   23.0000
  -14.5000
    3.6667

2.3 矩阵求值

方阵的行列式:

行列式的值:把一个方阵看作行列式,并对其按行列式的规则求值。

  • det(A):求方阵 A 所对应的行列式的值。
>> A=[1 2;3 4]
A =
     1     2
     3     4
>> det(A)
ans =
    -2

矩阵的秩:

矩阵的秩:矩阵线性无关的行数或列数。

  • rank(A):求矩阵 A 的秩。
>> A=[1,2,1;3 4 3;5 3 5]
A =
     1     2     1
     3     4     3
     5     3     5
>> rank(A)
ans =
     2

矩阵的迹:

矩阵的迹:等于矩阵的对角线元素之和,也等于矩阵的特征值之和。

  • trace(A):求矩阵 A 的迹。
>> A=[1,3,2;-3,2,1;4,1,2]
A =
     1     3     2
    -3     2     1
     4     1     2
>> trace(A)
ans =
     5

向量和矩阵的范数:

矩阵或向量的范数:用来度量矩阵或向量在某种意义下的长度。

  • norm(V) 或 norm(V,2):计算向量(矩阵) V 的2—范数。
  • norm(V,1):计算向量(矩阵) V 的1—范数。
  • norm(V,inf):计算向量(矩阵) V 的 ∞ —范数。
>> X=[2 0 1;-1 1 0;-3 3 0]
X =
     2     0     1
    -1     1     0
    -3     3     0
>> n=norm(X)
n =
    4.7234
>> n=norm(X,1)
n =
     6

矩阵的条件数:

矩阵的条件数:等于矩阵的范数与矩阵的逆矩阵的范数的乘积。

  • cond(A,1):计算 A 的1—范数下的条件数。
  • cond(A)或cond(A,2):计算 A 的2—范数数下的条件数。
  • cond(A,inf):计算 A 的 ∞ —范数下的条件数。
>> X=[2 0 1;-1 1 0;-3 3 0]
X =
     2     0     1
    -1     1     0
    -3     3     0
>> C=cond(X)
C =
   5.5044e+16

矩阵的特征值与特征向量:

数学定义:设 A 是 n 阶方阵,如果存在常数 λ 和 n 维非零列向量 x,使得等式 Ax=λx 成立,则称 λ 为 A 的特征值,x 是对应特征值 λ 的特征向量。

  • E=eig(A):求矩阵 A 的全部特征值,构成向量 E。
  • [X,D]=eig(A):求矩阵 A 的全部特征值,构成对角阵 D,并产生矩阵 X,X 各列是相应的特征向量。
>> A=[1 1 0;1 0 5;1 10 2]
A =
     1     1     0
     1     0     5
     1    10     2
>> [X,D]=eig(A)
X =
    0.0722    0.9751    0.0886
    0.5234   -0.0750   -0.6356
    0.8490   -0.2089    0.7669
D =
    8.2493         0         0
         0    0.9231         0
         0         0   -6.1723

2.4 稀疏矩阵

矩阵的存储方式:

完全存储方式:将矩阵的全部元素按列存储。

稀疏存储方式:只存储矩阵的非零元素的值及其位置,即行号和 列号。

注意:采用稀疏存储方式时,矩阵元素的存储顺序并没有改变,也 是按列的顺序进行存储。

稀疏存储方式的产生:

完全存储方式与稀疏存储方式之间的转化

  • A=sparse(S):将矩阵 S 转化为稀疏存储方式的矩阵 A。
  • S=full(A):将矩阵 A 转化为完全存储方式的矩阵 S。
>> A=sparse(eye(5))
A =
   (1,1)        1
   (2,2)        1
   (3,3)        1
   (4,4)        1
   (5,5)        1
>> B=full(A)
B =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1

直接建立稀疏存储矩阵

  • sparse(m,n):生成一个 m×n 的所有元素都是零的稀疏矩阵。
  • sparse(u,v,S):其中 u、v、S 是3个等长的向量。S 是要建立的稀疏存储矩阵的非零元素,u(i)、v(i)分别是 S(i) 的行和列下标。
>> A=sparse([1,2,2],[2,1,4],[4,5,-7])
A =
   (2,1)        5
   (1,2)        4
   (2,4)       -7
>> B=full(A)
B =

     0     4     0     0
     5     0     0    -7
  • spconvert(A):A(i,1) 表示第 i 个非零元素所在的行。A(i,2) 表示 第 i 个非零元素所在的列。 A(i,3) 表示第 i 个非零元素值的实部。A(i,4) 表示第 i 个非零元素值的虚部。
>> A=[2,2,1;2,1,-1;2,4,3]
A =
     2     2     1
     2     1    -1
     2     4     3
>> B=spconvert(A)
B =
   (2,1)       -1
   (2,2)        1
   (2,4)        3

带状稀疏矩阵的稀疏存储:带状稀疏矩阵就是一种十分典型的具有规则结构的稀疏矩阵,它是指 所有非零元素集中在对角线上的矩阵。

  • [B,d]=spdiags(A):从带状稀疏矩阵 A 中提取全部非零对角线元素赋给矩阵 B 及其这些非零对角线的位置向量 d。
  • A=spdiags(B,d,m,n):产生带状稀疏矩阵的稀疏存储矩阵 A,其中 m、n 为原带状稀疏矩阵的行数与列数,矩阵 B 的第 i 列即为原带状稀疏矩阵的第 i 条非零对角线,向量 d 为原带状稀疏矩阵所有非零对角线的位置
>> A =[11,0,0,12,0,0;0,21,0,0,22,0;0,0,31,0,0,32;41,0,0,42,0,0;0,51,0,0,52,0]
A =
    11     0     0    12     0     0
     0    21     0     0    22     0
     0     0    31     0     0    32
    41     0     0    42     0     0
     0    51     0     0    52     0
>> [B,d]=spdiags(A)
B =
     0    11    12
     0    21    22
     0    31    32
    41    42     0
    51    52     0
d =
    -3
     0
     3
>> A=spdiags(B,d,5,6) 
A =
   (1,1)       11
   (4,1)       41
   (2,2)       21
   (5,2)       51
   (3,3)       31
   (1,4)       12
   (4,4)       42
   (2,5)       22
   (5,5)       52
   (3,6)       32

单位矩阵的稀疏存储

  • speye(m,n):返回一个 m×n 的稀疏存储单位矩阵。
>> speye(3)
ans =
   (1,1)        1
   (2,2)        1
   (3,3)        1

应用举例:

求下列三对角线性方程组的解
[ 2 3 1 4 1 1 6 4 2 6 2 1 1 ] [ x 1 x 2 x 3 x 4 x 5 ] = [ 0 3 2 1 5 ] \left[ \begin{matrix} 2 & 3 \\ 1 & 4 & 1 \\ & 1 & 6 & 4 \\ & & 2 & 6 & 2 \\ & & & 1 & 1 \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \\ x_3 \\ x_4 \\ x_5 \end{matrix} \right] {=} \left[ \begin{matrix} 0 \\ 3 \\ 2 \\ 1 \\ 5 \end{matrix} \right] 2134116246121 x1x2x3x4x5 = 03215 文章来源地址https://www.toymoban.com/news/detail-727785.html

>> kf1=[1;1;2;1;0];
>> k0=[2;4;6;6;1];
>> k1=[0;3;1;4;2];
>> B=[kf1,k0,k1];
>> d=[-1;0;1];
>> A=spdiags(B,d,5,5);
>> f=[0;3;2;1;5];
>> x=A\f
x =
   -0.1667
    0.1111
    2.7222
   -3.6111
    8.6111

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

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

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

相关文章

  • 【机器学习】数据预处理 - 归一化和标准化

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 处理数据之前,通常会使用一些转换函数将 「特征数据」 转换成更适合 「

    2024年02月15日
    浏览(52)
  • 【scikit-learn基础】--『预处理』之 标准化

    数据的 预处理 是数据分析,或者机器学习训练前的重要步骤。 通过数据预处理,可以 提高数据质量 ,处理数据的缺失值、异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据 ,数据的来源和结构可能多种多样,分析和训练前要整合成一个数据集 提高数据性

    2024年02月05日
    浏览(42)
  • 深入理解机器学习——数据预处理:归一化 (Normalization)与标准化 (Standardization)

    分类目录:《深入理解机器学习》总目录 归一化 (Normalization)和标准化 (Standardization)都是特征缩放的方法。特征缩放是机器学习预处理数据中最重要的步骤之一,可以加快梯度下降,也可以消除不同量纲之间的差异并提升模型精度。 归一化(Normalization)是将一组数据变

    2024年02月08日
    浏览(42)
  • [架构之路-211]- 需求- 软架构前的需求理解:ADMEMS标准化、有序化、结构化、层次化需求矩阵 =》需求框架

    目录 前言: 一、什么是ADMES: 首先,需求是分层次的: 其次,需求是有结构的,有维度的 再次,不同层次需求、不同维度需求之间可以相互转化(难点、经验积累) 最终,标准化的ADMEMS需求矩阵 二、软架构前的需求理解 1. 目标 2. 时机 3.  四个步骤 三、最佳实践过程 第一

    2024年02月07日
    浏览(54)
  • 标准化体系建设(上):如何建立应用标准化体系和模型?

    今天我专门来讲讲标准化这个工作。可以说这项工作是运维过程中最基础、最重要的,但也是最容易被忽视的一个环节。 我做过多次公开演讲,每次讲到这个环节,通常会有单独的一页PPT,就放四个字,字号加大加粗,重复三遍,这四个字就是“标准先行”,然后演讲过程中

    2024年02月08日
    浏览(44)
  • python实现z-score标准化和0-1标准化

    目录 标准化处理 0-1标准化: z-score标准化: 1、用自带的函数来操作 实现z-score标准化 实现0-1标准化 2、自定义函数实现 实现z-score标准化 实现0-1标准化 对输出结果范围有要求,数据较为稳定的,不存在极端的最大最小值 数据存在异常值和较多的噪音,可以间接通过中心化避

    2024年02月11日
    浏览(43)
  • LA@二次型标准形@标准化问题介绍和合同对角化@二次型可标准化定理

    如果二次型只含有变量的平方项,则称之为 二次型的标准形 或 法式 ,即 f ( y 1 , ⋯   , y n ) f(y_1,cdots,y_n) f ( y 1 ​ , ⋯ , y n ​ ) = ∑ i = 1 n k i y i 2 sum_{i=1}^{n}k_iy_i^2 ∑ i = 1 n ​ k i ​ y i 2 ​ 标准形的矩阵式 f ( y 1 , ⋯   , y n ) = ∑ i n k i y i 2 = ( y 1 , y 2 , ⋯   , y n ) ( k 1 0 ⋯

    2024年02月09日
    浏览(53)
  • 不要再搞混标准化与归一化啦,数据标准化与数据归一化的区别!!

    数据的标准化是将数据按照一定的 数学规则进行转换 ,使得数据满足特定的标准,通常是使数据满足正态分布或标准差为1的标准。 标准化的常见方法包括 最小-最大标准化 和 Z-score标准化 。最小-最大标准化将数据映射到 [0,1 ]的范围内,最小-最大标准化将数据映射到0-1区间

    2024年01月21日
    浏览(54)
  • 数据标准化方法

    今天看到了“指数移动平均窗口标准化”,就研究了一下这是个啥东西,然后又顺便看了一下其他的数据标准化方法,这里顺便记录一下,方便以后查阅。 zscore标准化是一种 基于数据分布的标准化方法 。它的基本思想是 将数据转换为均值为0,标准差为1的分布 ,从而使得数

    2023年04月22日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包