跳转到内容

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


MATLAB 数组和矩阵的属性

[编辑 | 编辑源代码]

与 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 中几乎所有操作都通过大量使用数组来完成。要更深入地了解数组及其操作,请参阅数组和矩阵。

华夏公益教科书