Является ли спецификацией строки MATLAB конкретным или столбцом?

В MATLAB мы можем работать как по строкам, так и по столбцам матрицы. Что конкретно означает "конкретная строка или столбцы". Прошу прощения за этот наивный вопрос. Спасибо!

Ответы

Ответ 1

Важно понимать, что MATLAB хранит данные в порядковый номер столбца, поэтому вы знаете, что происходит, когда вы применяете оператор 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)).

Например, обычным способом получения вектора столбца inline из некоторого выражения, которое генерирует массив, является:

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

Как и в случае с (:), все столбцы друг на друга помещаются в один вектор столбца для всех данных в любых более высоких измерениях.  Но этот отличный синтаксический трюк позволяет избежать дополнительной строки кода.

Ответ 2

В MATLAB массивы хранятся в главном порядке столбца.

Это означает, что когда у вас многомерный массив, его 1D-представление в памяти таково, что самые левые индексы изменяются быстрее.

Он называется основным порядком столбцов, потому что для 2D-массива (матрицы) первый (самый левый) индекс обычно является индексом строки, поэтому, поскольку он изменяется быстрее второго (рядом справа) индекса, одномерное представление матрица - это память, соответствующая конкатенации столбцов матрицы.