【发布时间】:2014-02-20 04:45:44
【问题描述】:
在 MATLAB 中,我们可以对矩阵的行和列进行运算。 “行专业”或“列专业”到底是什么意思?
【问题讨论】:
-
你的意思是“行专业”和“列专业”吗?
在 MATLAB 中,我们可以对矩阵的行和列进行运算。 “行专业”或“列专业”到底是什么意思?
【问题讨论】:
在 MATLAB 中,数组按列主顺序存储。
这意味着当你有一个多维数组时,它在内存中的一维表示使得最左边的索引变化得更快。
之所以称为 列 主要顺序,是因为对于二维数组(矩阵),第一个(最左侧)索引通常是行索引,因此它比第二个(右侧)更改得更快index,矩阵的一维表示是内存对应于矩阵的列的串联。
【讨论】:
了解 MATLAB 将数据存储在 column-major order 中很重要,因此您知道在不使用任何逗号的情况下应用 colon 运算符时会发生什么:
>> M = magic(3)
M =
8 1 6
3 5 7
4 9 2
>> M(:)
ans =
8
3
4
1
5
9
6
7
2
我倾向于认为“MATLAB 下降,然后跨越”。这使得reshape 和permute 数组很容易,而不会扰乱您的数据。为了掌握线性索引(例如M(4)),这也是必要的。
例如,从某个生成数组的表达式中获取内联列向量的常用方法是:
reshape(<array expression>,[],1)
与(:) 一样,这会将所有列相互堆叠成单列向量,用于任何更高维度的所有数据。
但是这个漂亮的句法技巧可以让你避免额外的代码行。
【讨论】: