Существующая реализация для двухнормативной нормы может быть улучшена.
twoNorm = sqrt(sum(abs(M).^2,1)); # The two-norm of each column
abs(M).^2
будет вычислять целую кучу ненужных квадратных корней, которые просто сразу возводятся в квадрат.
Гораздо лучше сделать:
twoNorm = sqrt(
sum( real(M .* conj(M)), 1 )
)
Это эффективно обрабатывает реальные и сложные М.
Использование real()
гарантирует, что sum
и sqrt
действуют на действительные числа (а не на комплексные числа с мнимым компонентом 0).