Почему матрицы - это [строки, столбцы], а не [столбцы, строки]? - PullRequest
1 голос
/ 13 марта 2020

Для упрощения я буду называть столбец столбцом. Почему матрицы - это [строки, столбцы], а не [столбцы, строки]? Это вызвало у меня кучу головных болей и путаницы.

мое мышление таково: 1. обычный массив,

[1, 3, 5, 2, 4] 

, похож на матрицу с одной строкой и несколькими столбцами. И это записывается так: arr [n], и поэтому, если у нас было другое измерение,

[1, 3, 5, 2, 4]
[1, 3, 6, 3, 6]

теперь есть строки. Итак, давайте отметим строки после 'n', arr [n, rows], но реальность показывает нам обратное.

Кроме того, матрица из 2-х измерений может рассматриваться как декартова система координат (где направление оси y перевернуто, начало координат - элемент [0,0]). на плоскости мы обозначаем такие точки: (X, Y). Похоже, что столбцы расположены на оси x, а строки - на оси y, так почему бы не записать элементы таких матриц следующим образом: [Cols, Rows]?

Извините, если я запутался извините за мое невежество.

1 Ответ

1 голос
/ 13 марта 2020

IMO, это связано с латинскими типографскими соглашениями.

Латиница пишет слева направо, затем сверху вниз. В соответствии с этими соглашениями матрица разлагается на строки nRow. Затем каждая строка разбивается на элементы nColum, так же, как вы разлагаете текст в предложениях и предложения в словах.

Таким образом, информация организована с наиболее значимым расположением (строки) и наименее значимым (столбец).

В соответствии с тем же соглашением, что и в латинской (err arabi c) числовой нотации, у нас наиболее значимый nRow слева (первый, если вы латинский) и наименее значимый nColumn справа, таким образом (nRow, nColumn) для описания макета.

Естественно, доступ к одному элементу в строке iRow и столбце jCol следует одному и тому же соглашению (iRow, jCol).

Обратите внимание, что информация может располагаться совершенно по-разному в базовом программном обеспечении. Например, для многомерных массивов в FORTRAN и Matlab сначала изменяются первые индексы, а последовательность в памяти равна x (1,1) x (2,1) x (3,1) ... x (1,2) ) x (2,2) x (3,2) ... сортировка по столбцам, если мы считаем, что left (first) - индекс строки, right (last) - индекс столбца. Или, может быть, в какой-то оптимизированной библиотеке будет организовано расположение блоков для матрицы.

...