📜  MATLAB中的矩阵和数组

📅  最后修改于: 2021-01-07 02:22:51             🧑  作者: Mango

MATLAB中的矩阵和数组

  • MATLAB一次可处理整个矩阵和数组。
  • 所有类型的数据变量都存储为多维数组,可以是字符,字符串或数字。
  • 二维数组称为矩阵,通常用于线性代数。

在MATLAB中创建数组

我们可以在MATLAB中以多种方式创建数组:

  • 通过在元素之间使用空格:

    • 此命令创建一个具有一行四列的数组变量“ A”。
    • 存储在工作空间中的“ A”变量和输出将在命令窗口中显示为:

  • 通过在元素之间使用逗号:

    • 此命令将创建一个具有一行四列的数组变量“ a”。
    • 'a'变量存储在工作空间中,输出将在命令窗口中显示为:

  • 我们可以将两种方法结合在一起,但这不是一个好习惯。

它的工作原理与以前相同,但是为了更好的语法请避免使用它。

  • 在单行中具有其元素的数组称为行向量。或者我们可以说一维数组是一个向量。
  • 二维数组称为矩阵。这意味着矩阵具有多个行和列。因此,在创建具有多行的矩阵时,我们必须用分号分隔行。

  • 创建矩阵时要小心,每行应具有相同的列数,并且每行应以分号分隔。否则,它将显示错误并且不会创建矩阵。

  • 我们可以使用内置函数(例如1、0或rand)创建矩阵。

MATLAB中的矩阵和数组运算

MATLAB支持数组之间的两类操作,称为数组操作矩阵操作

数组操作是在逐个元素的基础上在数组之间实现的操作。也就是说,该操作是在两个数组中的相应元素上实现的。

例如,


注意:两个数组中的行数和列数必须相同。否则,MATLAB将生成错误消息。

下表总结了MATLAB中两个标量之间的算术运算。

两个标量之间的算术运算

Operation Algebraic Form MATLAB Form
Addition a + b a + b
Subtraction a – b a – b
Multiplication a x b a * b
Division Matrices and Arrays in MATLAB a / b
Exponentiation Matrices and Arrays in MATLAB a ^ b

数组操作也可能出现在数组和标量之间。如果在数组和标量之间执行该操作,则标量的值将应用于数组的每个元素。

例如,

矩阵运算

矩阵运算遵循线性代数的标准规则,例如矩阵乘法。在线性代数中,乘积c = axb由等式定义。

例如,


注意:矩阵a中的列数必须等于矩阵b中的行数。

MATLAB使用特殊符号对矩阵运算中的数组运算进行分类。在数组运算和矩阵运算具有不同定义的方法中,MATLAB在符号前使用句点表示数组运算(例如,。*)。

表中列出了标准数组和矩阵运算的列表。

Operation MATLAB Form Comments
Array Addition/td> a+b/td> Array addition and matrix addition are identical.
Array Subtraction/td> a-b/td> Array subtraction and matrix subtraction are identical.
Array Multiplication/td> a .* b/td> Element-by-Element multiplication of a and b. Both array must be the same shape, and one of them must be a scalar.
Matrix Multiplication/td> a*b/td> Matrix multiplication of a and b. The number of column in a must equal the number of rows in b.
Array Right Division/td> a ./ b/td> Element-by-element division of a and b: a (i, j) / b (i, j). Both arrays must be the same shape, and one of them must be a scalar.
Array Left Division/td> a .\ b/td> Element-by-element division of a and b, but with b in the numerator: b(i,j) / a(i,j). Both arrays must be the same shape, and one of them must be a scalar.
Matrix Right Division/td> a/b/td> Matrix division defined by a * inv (b), where inv(b) is the inverse of matrix b.
Matrix Left Division/td> a\b/td> Matrix division defined by inv(a) * b, where inv(a) is the inverse of matrix a.
Array Exponentiation a .^ b/td> Element-by-Element exponentiation of a and b: a (i, j) ^ b (i, j). Both arrays must be the same shape, and one of them must be a scalar.

矩阵和数组运算的示例

  • 我们可以使用单个算术运算运算符矩阵中的所有值。

    • 这里需要注意的一点是,当我们以+ 5输入命令时,它不会更改原始变量'a',直到我们不再为其分配输出为止。
    • 这就是为什么上述输出分配给默认变量“ ans”的原因。
  • 我们也可以使用单个函数来处理整个矩阵。

    • 我们可以在评论行之前使用“%”百分比符号输入评论。
  • 在变量后使用单引号(')来转置矩阵。

    • 矩阵的转置将每一行放置为一列。
  • 在MATLAB中,除了矩阵乘法之外,我们还可以执行逐元素乘法。让我们通过一个例子来理解逐元素乘法和矩阵乘法之间的区别:

MATLAB中的格式命令

MATLAB内部将所有数字存储为浮点值,最多15个小数点。但是通常最多显示4个小数点。让我们看一个例子。

  • 现在,我们将使用format命令在MATLAB中显示结果直至最大可能的小数点:

    • 格式化命令语法:在命令行中输入“长格式”。
    • 它将继续以上格式,直到我们更改format命令为止。
  • 现在,我们将使用另一个format命令来更改格式:

MATLAB中数组的串联

当我们连接或连接字符串,在MATLAB中,我们也可以连接数组。数组声明中使用的一对方括号[]本身是一个串联运算符。

我们可以通过两种方式连接数组:

  • 水平地
  • 垂直

MATLAB中数组的水平串联

  • 规则:所有数组的行数应相同。
  • 语法:将所有数组都用方括号括起来,并用逗号[a,b,c]分隔。
  • 例:

MATLAB中数组的垂直串联

  • 规则:所有数组的列数均应相同。
  • 语法:将所有数组括在用分号[a; b; c]分隔的方括号中。
  • 例:

在MATLAB中表示复数

  • 复数具有实部和虚部。
  • 虚数单位的值等于-1的平方根。平方(-1)=> 0.0000 + 1.0000i
  • 使用字母“ i”或“ j”表示复数的虚部。
  • 例:

MATLAB中的数组索引

在MATLAB中,每个变量都是一个数组。并且数组中的所有元素都按行和列进行索引。可以使用MATLAB中的索引访问任何特定元素。 MATLAB中数组的索引与Math 相同。它具有访问元素的不同语法。

在MATLAB中有几种索引元素的方法。

1.通过指定行和列下标:

  • 引用数组特定组件的最常见方法是在括号中使用数组变量指定行和列下标。
  • 在指定为下标的行和列的交点搜索元素。

2. MATLAB中的线性索引

  • 在行和列下标中使用单个下标被称为MATLAB中的线性索引。
  • 依次搜索遍历各列的元素。

3.在MATLAB中引用数组的多个元素

  • MATLAB中有一个冒号运算符(:),可用于引用数组的多个元素。
  • 例:



在MATLAB中使用冒号运算符创建矢量

通过使用冒号运算符,我们可以创建等距的值向量。我们可以以固定间隔分配可能影响下一个值的步长值。

  • 语法:开始:步骤:结束。
  • 示例:让我们在冒号运算符的帮助下创建一个包含13的表。

访问当前尺寸之外的数组元素

  • 我们只能在当前维度内访问元素。这意味着如果它是一个向量并且包含9个元素,那么我们将无法访问位置12的元素。因为在向量创建期间未定义第12个位置。
  • 如果我们输入用于访问其当前维之外的元素的命令,则它将引发错误,指出索引超出了数组范围。

  • 但是我们可以为当前不可用的位置分配一个值。
  • 例如,我们有9个元素的向量;然后,我们可以通过为其分配值来创建第12个元素或第9个元素之外的任何元素。

  • 并且,如果最后一个索引与新创建的索引之间存在间隙,则间隙索引将自动分配为0值。
  • 可以将值分配给所有数组中的索引。