将范数函数应用于矩阵行 - Matlab

时间:2012-11-13 17:18:01

标签: matlab

我有3列,n行矩阵:

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

我想将norm函数应用于每一行,并获得包含规范的1xn矩阵:

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

我可以使用for循环执行此操作,但有更好的方法吗?

3 个答案:

答案 0 :(得分:40)

怎么样?
 norms = sqrt(sum(A.^2,1))

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

取决于您的坐标是行还是列。

答案 1 :(得分:2)

如果第一个尺寸不是太大:

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

答案 2 :(得分:2)

如果可读性比性能更重要,您可能还会考虑:

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

此模式也适用于您可能希望在MATLAB本身不支持的一个维度上的其他操作。