Применение функции нормы к строкам матрицы - Matlab - программирование

Применение функции нормы к строкам матрицы - Matlab

У меня есть 3 столбца, n строк:

[ a,b,c;
  d,e,f;
  g,h,i; ]

Я хочу применить нормированную функцию к каждой из строк и получить матрицу 1xn, содержащую нормы:

[ norm([a,b,c]);
  norm([d,e,f]);
  norm([g,h,i]); ]

Я мог бы сделать это с помощью цикла for, но есть ли лучший способ?

4b9b3361

Ответ 1

Что насчет

 norms = sqrt(sum(A.^2,1))

или

 norms = sqrt(sum(A.^2,2))?

в зависимости от того, находятся ли ваши координаты в строках или столбцах.

Ответ 2

если первое измерение не слишком велико:

norms = sqrt(diag(A * A'));

Ответ 3

Если читаемость является более важным фактором, чем производительность, вы можете также рассмотреть:

norms = cellfun(@norm,num2cell(A,2));

Этот шаблон также адаптируется к другим операциям по одному измерению, которое вы, возможно, захотите выполнить, где MATLAB не поддерживает его изначально.