矩阵和数组有什么区别?

5

更普遍的术语是什么?那么为什么MATLAB被命名为矩阵实验室呢?


矩阵不是多维的吗?就像它是一个二维数组一样? - m0meni
4
在计算机中,当我听到“array”这个词时,我会想到一种通用的数据结构。对我而言,“matrix”是一种特定类型的数组,它遵循特定的加法、乘法、变换等规则。在MATLAB中,与Javascript或PHP相比,我倾向于将它们视为同义词。 - TroyHaskin
1
我认为,数组更加通用。通常矩阵被定义为二维数组。一维数组通常被称为向量,而超过两个维度的数组则被称为张量。 - Mikhail Genkin
http://es.mathworks.com/help/matlab/learn_matlab/matrices-and-arrays.html - Luis Mendo
3个回答

8
矩阵是一种实用的方式,用一个标量值的nxm数组来表示从n维空间到m维空间的线性变换。在计算机上执行线性代数操作也非常实用和系统化。例如,如果矩阵A表示线性变换f,矩阵B表示线性变换g,则复合函数f o g可写为A*B,其中*表示矩阵乘法。Matlab还有许多与矩阵操作(即线性代数操作)相关的例程,如det、pinv、svd等。
现在仍然可以看到,在Matlab中,像*、/这样的运算符与矩阵操作密切相关,因此也与线性代数操作密切相关。我认为这是Matlab在早期设计时的原始目标,因此它的名称(虽然这只是猜测,但离现实并不远)。
要对n维数据集执行逐元素操作,必须编写.*或./,表示您正在执行数组操作。我不会说数组操作包括矩阵操作,它们是不同的。后者涉及线性代数,而前者只涉及在大型数据集上操作的实用方法。这些数据不限于数字,它们只是任意n维数据集(字符串、数字、单元格等)。
Matlab还具有非常简洁的语法,可以在应用后续矩阵或数组操作之前,在子块(即线性/逻辑下标)上执行数组操作,从而使重组数据集变得非常容易。

我认为这个说法很清晰而有见地。MATLAB得名于“矩阵实验室”(matrix laboratory),因为它“被优化用于涉及矩阵和向量的操作。”http://www.mathworks.com/help/matlab/matlab_prog/vectorization.html - Steven C. Howell

5
如果您询问MATLAB,那么“matrix”一词通常指2D数组,而“array”可以是n维的。早期版本的MATLAB仅支持2D矩阵,不支持n维数组。我相信n维数组的支持是在MATLAB的第5个版本中引入的。

我从Matlab版本4开始学习,并且非常确定它没有n维数组。 - Luis Mendo

0
我认为,与C风格数组(例如double array[])或Java数组(例如double arry2[])相比,MATLAB的矩阵是一种更高级的数组。我还会说,MATLAB矩阵比C++向量或Java ArrayList更适合数学目的。然而,如果你指的是MATLAB数组,我会说它更加复杂。我建议您查看关于matlab data的链接,该链接描述了用于存储大多数MATLAB数据的mxArray类型。如果您没有更好的数组描述,那么这个问题很难完全回答。但是,就类型而言,像a = [1,2,3,4]这样的数组和像b = [1,2,3,4;5,6,7,8]这样的矩阵之间没有区别。也可以有更高维度的矩阵,例如c = ones(3,4,3)。在MATLAB中,这些通常也被称为矩阵,或者如果您需要更具体的话,可以称为N维矩阵。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接