Ответ 1
Что насчет
norms = sqrt(sum(A.^2,1))
или
norms = sqrt(sum(A.^2,2))?
в зависимости от того, находятся ли ваши координаты в строках или столбцах.
У меня есть 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, но есть ли лучший способ?
Что насчет
norms = sqrt(sum(A.^2,1))
или
norms = sqrt(sum(A.^2,2))?
в зависимости от того, находятся ли ваши координаты в строках или столбцах.
если первое измерение не слишком велико:
norms = sqrt(diag(A * A'));
Если читаемость является более важным фактором, чем производительность, вы можете также рассмотреть:
norms = cellfun(@norm,num2cell(A,2));
Этот шаблон также адаптируется к другим операциям по одному измерению, которое вы, возможно, захотите выполнить, где MATLAB не поддерживает его изначально.