MATLAB 编程/数组
数组是 MATLAB 中最基本的数据类型。在 MATLAB 中,与许多传统语言一样,数组是多个相同类型值的集合。之前介绍的字符串和数字数据类型是数组的特例。
矩阵 是一个具有两个维度的数组。大多数数组具有相同的数据类型;但是,元胞数组 是一个具有不同数据类型的数组。如果未为数字指定数据类型,则默认数据类型等同于同一架构上 C 编程语言中的双精度浮点数。例如,在 x86 和 PowerPC 上,双精度数具有 64 位。
行数组使用方括号内的逗号分隔值来创建
>> array = [0, 1, 4, 5] array = 0 1 4 5
有时对于简单的行数组可以省略逗号。不建议省略逗号,因为在更大更复杂的数组中,空格可能会造成歧义。逗号几乎总是表示数组是水平的。
列数组使用分号来分隔值
>> column = [1; 2; 3] column = 1 2 3
二维数组(或矩阵)使用逗号分隔列,分号分隔行来声明
>> matrix = [1, 2, 3; 4, 5, 6] matrix = 1 2 3 4 5 6
简单矩阵操作 是许多线性代数计算的基础。要使用超过两个维度的数组,需要使用索引扩展矩阵。
在 MATLAB 中声明数组时,所有行和所有列都必须具有相同的大小。如果不符合,则会生成错误消息。
>> matrix = [1, 2, 3; 4, 5] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
使用整数对数组进行索引。要返回简单数组中的单个元素,请使用单个整数。
>> array = [0, 1, 4, 5]; >> array(3) ans = 4
要返回二维数组中的单个元素,请使用一个数字作为行索引,另一个数字作为列索引。
>> matrix = [1, 2, 3; 4, 5, 6]; >> matrix(2,2) ans = 5
要返回数组中的多个元素,可以使用数组作为索引。
>> array = [0, 1, 4, 5]; >> array([1 3]) ans = 0 4
要返回数组的最后一个元素,请使用 (end)。
>> array = [0, 1, 4, 5]; >> array(end) ans = 5
可以使用冒号 (:) 返回索引范围。
>> array = [0, 1, 4, 5]; >> array(2:end) ans = 1 4 5
与 C 等低级语言不同,MATLAB 中的数组是一种更高级别的类型:它包含有关其大小、数据类型等各种信息。
>> array = [0,1,4,5]; >> length(array) ans = 4 >> class(array) ans = double
可以使用内置的 size 函数了解矩阵的行数和列数。遵循标准的数学约定,第一个数字是行数,第二个数字是列数。
>> matrix = [1, 2, 3; 4, 5, 6]; >> size(matrix) ans = 2 3
MATLAB 数组的目标是具有类似于数学向量和矩阵的类型。因此,行数组和列数组并不等效。一维数组实际上是多维数组的特例,size 函数也可以用于它们。
>> size(array) ans = 1 4
行和列的大小不同,因此它们并不等效。
>> size(column) ans = 3 1 >> size(row) ans = 1 3
使用数组和矩阵的主要优点是,它使您无需使用循环即可对数组的多个元素执行相同的操作。例如,假设您想对数组 [1,2,3] 的每个元素加 3。如果 MATLAB 不使用数组,则您必须使用 FOR 循环来完成此操作。
>> array = [1,2,3]; >> for ii = 1:3 array(ii) = array(ii) + 3; >> end >> array array = [4,5,6]
在 MATLAB 中,这样做效率低下,并且会导致程序运行速度非常慢。相反,您可以创建另一个包含 3 的数组,并将两个数组直接相加。MATLAB 会自动将元素分开。
>> array = [1,2,3]; >> arrayofthrees = [3,3,3]; >> array = array + arrayofthrees array = [4,5,6];
如果您只是要添加一个常数,也可以省略 'arrayofthrees' 的声明,因为 MATLAB 会假设该常数将添加到数组的所有元素。这非常有用,例如,如果您使用的是大小可变的数组。
>> array = [1,2,3]; >> array + 3 ans = [4,5,6]
相同的规则适用于标量乘法。
有关 MATLAB 可以对数组执行的运算的更多信息,请参阅数组运算简介。
数组是 MATLAB 的一个基本原理,MATLAB 中几乎所有操作都通过大量使用数组来完成。要更深入地了解数组及其操作,请参阅数组和矩阵。