在MATLAB中,我们可以对矩阵的行和列进行操作。 “行特定或列特定”的含义是什么?我很抱歉这个天真的问题。 谢谢!
答案 0 :(得分:30)
重要的是要理解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)
与(:)
一样,对于任何更高维度的所有数据,这将所有列彼此叠加成单列向量。
但是这个漂亮的句法技巧可以避免额外的代码行。
答案 1 :(得分:5)
在MATLAB中,数组以列主要顺序存储。
这意味着当你有一个多维数组时,它在内存中的1D表示使得最左边的索引变化得更快。
它被称为列主要顺序,因为对于2D数组(矩阵),第一个(最左边)索引通常是行索引,因此它的变化速度快于第二个(紧邻右侧) index,矩阵的1D表示是内存对应于矩阵的列的串联。