【问题标题】:Is MATLAB row specific or column major?MATLAB 是特定行还是主要列?
【发布时间】:2014-02-20 04:45:44
【问题描述】:

在 MATLAB 中,我们可以对矩阵的行和列进行运算。 “行专业”或“列专业”到底是什么意思?

【问题讨论】:

  • 你的意思是“行专业”和“列专业”吗?

标签: matlab matrix


【解决方案1】:

在 MATLAB 中,数组按列主顺序存储。

这意味着当你有一个多维数组时,它在内存中的一维表示使得最左边的索引变化得更快。

之所以称为 主要顺序,是因为对于二维数组(矩阵),第一个(最左侧)索引通常是行索引,因此它比第二个(右侧)更改得更快index,矩阵的一维表示是内存对应于矩阵的的串联。

【讨论】:

    【解决方案2】:

    了解 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 下降,然后跨越”。这使得reshapepermute 数组很容易,而不会扰乱您的数据。为了掌握线性索引(例如M(4)),这也是必要的。

    例如,从某个生成数组的表达式中获取内联列向量的常用方法是:

    reshape(<array expression>,[],1)
    

    (:) 一样,这会将所有列相互堆叠成单列向量,用于任何更高维度的所有数据。 但是这个漂亮的句法技巧可以让你避免额外的代码行。

    【讨论】:

    • 那个简单的句子“MATLAB 下降,然后横穿”,终于让我记住了 MATLAB 的索引规则。 6 年来,我一直在努力记住这个简单的事实,哈哈。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-14
    • 2017-12-07
    • 2017-05-21
    • 2020-11-04
    • 2014-06-25
    • 2011-10-09
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多