Matlab-矩阵 - 快速指南


Matlab-矩阵 - 简介

MATLAB(矩阵实验室)是第四代高级编程语言和交互式环境,用于数值计算、可视化和编程。它允许矩阵操作;绘制函数和数据;算法的实现;创建用户界面;与其他语言编写的程序交互,包括 C、C++、Java 和 FORTRAN;分析数据;开发算法;并创建模型和应用程序。

在本教程中,我们将重点介绍使用 MATLAB 的矩阵实现。

矩阵

矩阵是按行和列排列的数字的集合,表示矩形阵列。

2行3列的矩阵示例如下所示

矩阵

矩阵维数

矩阵的维数是根据行数和列数定义的。

2 行 3 列的矩阵称为 2x3 矩阵。

3 行 3 列的矩阵称为 3x3 矩阵。

Matlab 中的矩阵

在 MATLAB 中,您可以通过在每行中输入以逗号或空格分隔的数字形式的元素并使用分号标记每行的末尾来创建矩阵。

例子

要创建 4x5 矩阵,请输入以下内容。

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

该矩阵有 4 行和 5 列。

第一行的值为 1 2 3 4 5

第二行:2 3 4 5 6

第三行:3 4 5 6 7

第四行:4 5 6 7 8

输出

大小为 4x5 的矩阵如下所示

a = 
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8

让我们在 MATLAB 命令窗口中测试矩阵的创建,如下所示 -

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

a =
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
   
>>

引用元素

要引用矩阵 mx 的第 m 行第 n 列中的元素,我们编写以下内容

mx(m, n);

例子

要引用上一节中创建的矩阵 a 第 2 行第 5 列中的元素,我们输入以下内容。

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

a =
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
   
>> a(2,5)

ans =
   6
 
>>

要获取矩阵中第 n 列的所有元素,可以使用 A (:,n),其中 n 代表矩阵中的第 no 列。

A(:,n).

例子

现在,让我们根据矩阵 a 第 4 列的所有元素创建一个列向量 v。这将如下所示

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
v = a(:,4)

输出

MATLAB 将执行上述语句并返回以下结果。

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

a =
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
  
>> v=a(:,4)

v =
   4
   5
   6
   7
  
>>

您还可以选择第 m 到第 n 列中的元素。为此,我们写如下。

a(:,m:n)

例子

让我们通过从第二列和第三列中获取元素来创建一个较小的矩阵,如下所示 -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a(:, 2:3)

输出

MATLAB 将执行上述语句并返回以下结果 -

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

a =
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
 
>> a(:, 2:3)

ans =
   2  3
   3  4
   4  5
   5  6
 
>>

以同样的方式,您可以通过获取矩阵的子部分来创建子矩阵。

例子

让我们创建一个子矩阵 saby,取 a 的内部子部分,如下所示 -

3  4  5 
4  5  6

在 MATLAB 命令窗口中执行期间,矩阵将如下所示 -

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]

a =
   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
   
>> sa = a(2:3,2:4)

sa =
   3  4  5
   4  5  6
   
>>

Matlab-矩阵 - 环境设置

MATLAB的官方网站是https://www.mathworks.com

以下页面将出现在您的屏幕上 -

MATLAB 网站

要下载 MATLAB,请访问https://in.mathworks.com/downloads/,如下所示 -

下载R2021A

MATLAB 不是免费下载的,您需要付费购买许可副本。稍后就可以下载了。

许可证副本

有免费试用版,您必须为各自的帐户创建登录信息。创建帐户后,您可以下载 MATLAB 以及在线版本,试用 30 天许可证。

获取试用软件

从他们的网站创建登录后,下载 MATLAB 并安装在您的系统上。然后,启动 MATLAB,或者您也可以使用登录后即可使用的在线版本。

这就是当您安装 matlab 或点击 MATLAB 在线链接时 MATLAB UI 界面的样子。

用户界面

了解 MATLAB 环境

MATLAB 开发 IDE 可以从桌面上创建的图标启动。MATLAB 中的主工作窗口称为桌面。启动 MATLAB 后,桌面将以其默认布局显示。

正如我之前所说,如果您使用的是试用版,可以使用 MATLAB 的在线链接来获取 IDE,如下所示 -

试用版

让我们了解一下 MATLAB IDE。

当前文件夹

该面板允许您访问项目文件夹和文件。

当前文件夹

命令窗口

这是可以在命令行输入命令的主要区域。它由命令提示符 (>>) 指示。

命令提示符

工作空间

工作区显示从文件创建和/或导入的所有变量。

工作空间

Matlab-矩阵 - 创建矩阵

在 MATLAB 中,您可以通过在每行中以逗号输入元素来创建矩阵。您还可以创建一个由空格分隔的数字的矩阵,并使用分号来标记每行的末尾。

单行矩阵

让我们在 MATLAB 中创建一个具有单行和三个元素的简单矩阵。每个元素都应该有一个空格或逗号。

例子

考虑下面提到的元素来创建矩阵。

m=[2, 4, 6]

输出

在 MATLAB 中执行时,它将显示以下内容 -

>>m = [2, 4, 6]
 
m =

   2  4  6
>>

当您在 MATLAB 中执行代码时,矩阵的结果将显示在命令窗口中。

多行矩阵

例子

现在让我们创建一个多行矩阵。为此,我们需要用分号 (;) 分隔每一行,如下所示 -

m = [2 4 6; 3 6 9; 4 8 12]

输出

这里2 4 6是第一行,3 6 9是第二行,4 8 12是第三行。矩阵如下 -

m = 2  4  6
    3  6  9
    4  8 12

现在让我们在 MATLAB 命令提示符中执行相同的操作,如下所述 -

>> m = [2 4 6; 3 6 9; 4 8 12]

m =

   2  4  6
   3  6  9
   4  8 12
   
>>

3x3 矩阵在 MATLAB 中显示如上所示。

除了使用您选择的值创建矩阵之外,您还可以使用内置的 MATLAB 函数 Zeros、rand 或 Ones 来创建矩阵,如下所示 -

零函数

这将创建具有给定行/列大小的全零矩阵。

例子

您可以使用 MATLAB Zeros 函数,如下所示 -

m0 = zeros(3,3)

输出

您将得到以下输出 -

>> m0 = zeros(3,3)

m0 =

   0  0  0
   0  0  0
   0  0  0
   
>>

的功能

创建的矩阵将以 1 作为值。

例子

您可以使用 MATLAB 函数,如下所示 -

m1 = ones(3,3)

输出

您将得到以下输出 -

>> m1 = ones(3,3)

m1 =
   1  1  1
   1  1  1
   1  1  1
   
>>

rand() 函数

函数 rand() 允许您创建一个具有给定大小的随机元素的矩阵。这是一个相同的例子。

例子

m1 = rand(3,3)

输出

现在让我们在 MATLAB 中执行相同的操作来查看结果。输出如下 -

>> m1 = rand(3,3)

m1 =

   0.8147  0.9134  0.2785
   0.9058  0.6324  0.5469
   0.1270  0.0975  0.9575
   
>>

Matlab-Matrix - 使用矩阵

在本章中,我将介绍如何在 MATLAB 环境中运行矩阵以获得输出。定义矩阵和其他矩阵运算将在后续章节中详细讨论。

要在 MATLAB 中获取矩阵输出,将使用 -

  • 命令提示符
  • 使用m文件

使用命令提示符

您可以直接在命令提示符内执行矩阵。这是一个例子,其中我们有两个矩阵ab

运算a+b给出矩阵ab的和。

运算ab给出矩阵ab的减法。

输出命令提示符如下所示 -

>> a = [ 1 2 3 ; 4 5 6; 7 8 9];
>> b = [ 7 5 6 ; 2 0 8; 5 7 1];
>> c = a + b

c =

    8   7   9
    6   5  14
   12  15  10
   
>> d = a - b

d =
   -6  -3  -3
    2   5  -2
    2   1   8
	
>>

使用m文件

您还可以使用文件来编写代码,然后在命令提示符下执行它,如下所示 -

单击“新建脚本”,如下所示 -

新脚本

这是打开一个新的未保存的文件,如下所示 -

未保存

保存文件并在里面写入您的代码

文件保存为 testmatrix.m。

现在您可以使用运行按钮或在命令窗口中键入文件名。

运行按钮

输出将显示在命令窗口中,如下所示 -

>> testmatrix

c =
   8   7   9
   6   5  14
  12  15  10
  
d =
   -6  -3  -3
    2   5  -2
    2   1   8
	
>>

Matlab-矩阵 - 乘法

考虑两个矩阵 A 和 B。如果 A 是mxn矩阵,B 是nxp矩阵,它们可以相乘以生成 mxn 矩阵 C。仅当 A 中的列数 n 等于列数时,矩阵乘法才可能B 中的第 n 行。

在矩阵乘法中,第一个矩阵中的行元素与第二个矩阵中的相应列相乘。

结果矩阵 C 中第 (i, j) 位的每个元素是第一个矩阵第 i 行中的元素与第二个矩阵第 j 列中相应元素的乘积之和。

MATLAB 中的矩阵乘法是使用 * 运算符执行的。

例子

考虑以下 MATLAB 中的示例

a = [ 1 2 3; 2 3 4; 1 2 5];
b = [ 2 1 3 ; 5 0 -2; 2 3 -1];
prod = a * b

输出

在 MATLAB 中执行将显示以下结果 -

>> a = [ 1 2 3; 2 3 4; 1 2 5];
b = [ 2 1 3 ; 5 0 -2; 2 3 -1];
prod = a * b


prod =

    18  10  -4
    27  14  -4
    22  16  -6
 
>>

mtimes 函数

您还可以使用函数mtimes来将两个给定矩阵相乘。它是 MATLAB 中可用的内置函数。

例子

考虑以下示例 -

a = [ 1 2 3; 2 3 4; 1 2 5];
b = [ 2 1 3 ; 5 0 -2; 2 3 -1];
test= mtimes(a,b)

输出

在 MATLAB 中执行时,输出如下 -

>> a = [ 1 2 3; 2 3 4; 1 2 5];
b = [ 2 1 3 ; 5 0 -2; 2 3 -1];
test= mtimes(a,b)


test =

    18  10  -4
    27  14  -4
    22  16  -6
      
>>

Matlab-矩阵 - 加法

要添加两个矩阵,两个操作数矩阵必须具有相同的行数和列数。

例子

这是一个例子

a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = a + b

输出

在 MATLAB 中执行时,结果如下 -

>> a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = a + b

c =

    8  7   9
    6  5  14
   12 15  10
 
>>

plus() 函数

您还可以使用 plus() 内置函数来添加两个矩阵,如下所示 -

例子

考虑以下使用 plus() 函数将两个矩阵相加的示例 -

a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = plus(a,b)

输出

MATLAB 中的执行如下所示 -

>> a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = plus(a,b)

c =

    8   7   9
    6   5  14
   12  15  10
 
>>

Matlab-矩阵 - 减法

要对两个矩阵进行减法,两个操作数矩阵必须具有相同的行数和列数。

例子

这是一个例子 -

a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = a - b

输出

在 MATLAB 中执行时,结果如下 -

>> a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = a - b

c =

   -6  -3  -3
    2   5  -2
    2   1   8
   
>>

minus() 函数

您还可以使用 minus() 内置函数来减去两个矩阵。

例子

考虑以下使用 minus() 函数进行两个矩阵相减的示例 -

a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = minus(a , b)

输出

您将得到以下结果 -

>> a = [ 1 2 3 ; 4 5 6; 7 8 9];
b = [ 7 5 6 ; 2 0 8; 5 7 1];
c = minus(a , b)

c =

   -6  -3  -3
    2   5  -2
    2   1   8
 
>>

Matlab-矩阵 - 行列式

矩阵的行列式是使用MATLAB的det函数计算的。例如,矩阵 A 的行列式由 det(A) 给出。

例子

考虑以下计算矩阵行列式的示例 -

a = [ 1 2 3; 2 3 4; 1 2 5];
test = det(a)

输出

在 MATLAB 中执行的代码如下 -

>> a = [ 1 2 3; 2 3 4; 1 2 5];
test = det(a)

test =

   -2 
>>

Matlab 矩阵 - 逆矩阵

矩阵 A 的逆矩阵由 A−1 表示,使得以下关系成立 -

AA−1 = A−1A = 1

矩阵的逆矩阵并不总是存在。如果矩阵的行列式为零,则逆矩阵不存在,并且该矩阵是奇异的。

MATLAB 中矩阵的逆是使用 inv 函数计算的。矩阵 A 的逆矩阵由 inv(A) 给出。

例子

这是计算给定矩阵的逆的示例 -

a = [ 1 2 3; 2 3 4; 1 2 5];
test = inv(a)

输出

MATLAB 中的执行给出以下结果 -

>> a = [ 1 2 3; 2 3 4; 1 2 5];
test = inv(a)

test =

   -3.5000   2.0000   0.5000
    3.0000  -1.0000  -1.0000
   -0.5000       0    0.5000
 
>>

Matlab-矩阵 - 迹

Trace 帮助您计算给定矩阵中对角线元素的总和。

例子

考虑给定的 3x3 矩阵。让我们找出对角线元素的总和,如下所示 -

a = [ 1 2 3; 2 3 4; 1 2 5];
test = trace(a)

输出

MATLAB 中的执行如下 -

>> a = [ 1 2 3; 2 3 4; 1 2 5]
test = trace(a)

a =

   1  2  3
   2  3  4
   1  2  5
 
test =

   9
   
>>

Matlab-矩阵 - 秩

矩阵的秩是矩阵中线性独立列的数量。函数rank()有助于返回给定矩阵的排名。

例子

考虑以下使用矩阵的rank()函数的示例 -

a = [ 1 2 3; 2 3 4; 1 2 5]
test = rank(a)

输出

执行代码时 MATLAB 中的输出如下 -

>> a = [ 1 2 3; 2 3 4; 1 2 5]
test = rank(a)

a =

   1  2  3
   2  3  4
   1  2  5
 
test =

   3
 
>>

Matlab-矩阵 - 转置

转置运算交换矩阵中的行和列。它由单引号(') 表示。

例子

考虑以下示例 -

a = [ 10 12 23 ; 14 8 6; 27 8 9]
b = a'

输出

MATLAB 中的执行给出以下输出 -

>> a = [ 10 12 23 ; 14 8 6; 27 8 9]
b = a'

a =

   10  12  23
   14   8   6
   27   8   9
 
b =

   10  14  27
   12   8   8
   23   6   9
 
>>

转置()函数

您还可以使用 transpose() 函数来获取矩阵的转置。

例子

考虑以下使用 transpose() 函数的示例 -

a = [ 10 12 23 ; 14 8 6; 27 8 9]
b = transpose(a)

输出

您将得到以下输出 -

>> a = [ 10 12 23 ; 14 8 6; 27 8 9]
b = transpose(a)

a =

   10  12  23
   14   8   6
   27   8   9
 
b =

   10  14  27
   12   8   8
   23   6   9
 
>>

Matlab-矩阵 - 删除行和列

您可以通过向该行或列分配一组空方括号 [] 来删除矩阵的整行或整列。基本上,[] 表示一个空数组。

例子

例如,让我们删除 a 的第四行,如下所示 -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8];
a( 4 , : ) = []

输出

下面是上面代码在 MATLAB 中的执行

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
a( 4 , : ) = []

a =

   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
 
a =

   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
 
>>

第四行被删除。它仅显示三行。

例子

接下来,让我们删除 a 的第五列,如下所示 -

a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
a(: , 5)=[]

输出

让我们看看上述代码在 MATLAB 中的执行情况 -

>> a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
a(: , 5)=[]

a =

   1  2  3  4  5
   2  3  4  5  6
   3  4  5  6  7
   4  5  6  7  8
 
a =

   1  2  3  4
   2  3  4  5
   3  4  5  6
   4  5  6  7
 
>>