MATLAB 中变量和数组的操作

17 Mar 2025 | 6 分钟阅读

在任何 MATLAB 程序中,数据的结构单位是数组。数组是组织成行和列并由单个名称标识的记录值集合。数组可以被分配为向量矩阵。“向量”一词通常用于定义只有一维的数组,而“矩阵”一词通常用于定义具有两个或更多维度的数组。

行数表示数组的大小,列数与行数一起表示数组的大小,行数在前。数组中的项目总数将是行数和列数的乘积。

例如,以下数组的大小是

Working with Variables and Arrays in MATLAB

数组中的单个项通过数组名称后跟特定项的行和列进行寻址。如果数组是行向量或列向量,则只需要一个下标。例如,在前一个数组中 a(2,1) 是 3,c(2) = 2。

MATLAB 变量是内存区域,包括数组,它由用户指定的名称调用。可以通过在适当的 MATLAB 命令中包含其名称来随时使用或修改数组的内容。

MATLAB 变量名必须以字母开头,后跟任意顺序的字母、数字和下划线(_)字符。只有前 63 个字符是必需的;如果使用了超过 63 个字符,则其余字符将被忽略。如果两个变量的名称仅在第 64 个字符上有所不同,MATLAB 将它们视为同一个变量。

Working with Variables and Arrays in MATLAB

在 MATLAB 中创建和初始化变量

MATLAB 变量在初始化时自动生成。

在 MATLAB 中初始化变量有三种方法

  1. 在赋值语句中为变量赋值。
  2. 从键盘向变量输入数据。
  3. 从文件中读取数据。

在赋值语句中初始化变量

初始化变量的最简单方法是在赋值语句中为其分配一个或多个值。

赋值语句的标准格式是

                  var = expression;

其中 var 是变量名,expression 是标量常量、数组或常量、其他变量和数学运算(+、- 等)的组合。表达式的值使用标准的数学规则计算,并将结果值保存在命名的变量中。语句末尾的分号是可选的。如果省略分号,分配给 var 的值将在命令窗口中回显。如果存在分号,则尽管已完成赋值,但命令窗口中不会显示任何内容。

使用赋值语句初始化变量的示例如下

                  var = 40i;
                  var2 = var/5;
                  x = 1; y = 2;
                  array = [1 2 3 4];

第一个示例生成一个双精度类型的标量变量,并将其存储为虚数 40i。

第二个示例生成一个标量变量,并将其存储为表达式 var/5 的结果。

第三个示例表明,多个赋值语句可以放在同一行上,前提是它们用分号或逗号分隔。

最后一个示例显示变量也可以用数据数组进行初始化。此类数组使用方括号 ([]) 和分号构建。数组的所有项都按行顺序排列。换句话说,每一行的值都从左到右记录,最上面一行在前,最下面一行在后。行内的单个值用空格或逗号分隔,行本身用分号或换行符分隔。

以下语句都是可以用于初始化变量的合法数组

Working with Variables and Arrays in MATLAB

数组的每一行中的项数必须相同,并且每一列中的项数也必须相同。例如:

                  [1 2 3; 4 5];

是无效的,因为第 1 行有三项,而第 2 行只有两项。

使用内置函数初始化

也可以使用内置的 MATLAB 函数来初始化数组。例如,zeros 函数可用于生成任意所需大小的全零数组。zeros 函数有多种形式。如果函数有一个单独的标量参数,它将创建一个方阵,并将该参数用作行数和列数。如果函数有两个标量参数,第一个参数将是行数,第二个参数将是列数。由于 size 函数返回两个值,包括数组中的行数和列数,因此它可以与 zeros 函数结合使用,以创建与另一个数组大小相同的零数组。

以下是一些使用 zeros 函数的示例

                  a = zeros(2);
                  b = zeros(2,3);
                  c = [1 2; 3 4];
                  d = zeros(size(c));

这些语句生成以下数组

Working with Variables and Arrays in MATLAB

类似地,ones 函数可用于生成包含所有 1 的数组,eye 函数可用于生成包含单位矩阵的数组,其中所有对角线上的项都为 1,所有非对角线上的项都为 0。

以下表格包含用于初始化变量的标准 MATLAB 函数列表。

用于初始化变量的 MATLAB 函数

函数目的
zeros(n)创建一个 n x n 的零矩阵。
zeros(m,n)创建一个 m x n 的零矩阵
zeros(size(arr))创建与 arr 大小相同的零矩阵。
ones(n)创建一个 n x n 的全 1 矩阵。
ones(m,n)创建一个 m x n 的全 1 矩阵。
ones(size(arr))创建一个与 arr 大小相同的全 1 矩阵。
eye(n)创建一个 n x n 的单位矩阵。
eye(m,n)创建一个 m x n 的单位矩阵。
length(arr)返回向量的长度,或二维数组的最长维度。
size(arr)返回指定 arr 行数和列数的两个值。

使用键盘输入初始化变量

也可以提示用户并通过用户直接在键盘上键入的记录来初始化变量。此选项允许脚本文件在执行时提示用户输入数据值。input 函数会在命令窗口中显示一个提示字符串,然后等待用户输入响应。

例如,考虑以下语句

                  my_val = input('Enter an input value:');

当执行此函数时,MATLAB 会打印字符串“Enter an input value:”,然后等待用户响应。如果用户输入一个数字,可以只输入该数字。如果用户输入一个数组,则必须用方括号括起来。否则,当按下回车键时,无论输入什么都将存储在变量 my_val 中。如果只按下回车键,则会生成一个空矩阵并存储在变量中。

如果 input 函数的第二个参数包含字符 's',则输入的数据将作为字符串返回给用户。因此,语句

                  » in1 = input('Enter data: ');
                  Enter data: 1.23
                  将值 1.23 存储到 in1 中,而语句
                  » in2 = input('Enter data: ','s');
                  Enter data: 1.23
                  将字符串 '1.23' 保存到 in2 中。