Ответ 1
Хороший вопрос +1.
Чисто с точки зрения программирования Matlab лучше всего рассматривать матрицу как последовательность векторов столбцов. Зачем? Потому что именно так Matlab выделяет их в память ваших компьютеров. То есть два последовательных элемента в любом столбце матрицы будут распределены рядом друг с другом в памяти. Это иногда называют "порядок столбцов" и используется на таких языках, как Fortran, R и Julia. Противоположность, неудивительно, называется "порядок строк" и используется в C и Python.
Следствием этого является то, что Matlab будет намного быстрее при выполнении операций над столбцами матрицы, чем в строках. @angainor предоставил отличный ответ на мой вопрос несколько месяцев назад, который демонстрирует этот факт. Основываясь на понимании @angainor, вот полезный тест скорости для запуска:
M = 1000; %# Number of iterations over each method
T = 1000; %# Number of rows
N = 1000; %# Number of columns
X = randn(T, N); %# Random matrix
%# Loop over the rows of a matrix and perform a sum operation on each row vector
tic
for m = 1:M
for t = 1:T
sum(X(t, :));
end
end
toc
%# Loop over the columns of a matrix and perform a sum operation on each column vector
tic
for m = 1:M
for n = 1:N
sum(X(:, n));
end
end
toc
На моей машине результат теста:
Elapsed time is 9.371870 seconds. %# Looping over rows
Elapsed time is 1.943970 seconds. %# Looping over columns
Другими словами, операции, выполняемые в столбцах, почти в 5 раз быстрее операций, выполняемых в строках!
С математической точки зрения я не верю себе, чтобы дать хороший ответ. Вероятно, вы могли бы получить отличную информацию из math.stackexchange.