我有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循环执行此操作,但有更好的方法吗?
答案 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本身不支持的一个维度上的其他操作。