我有一个 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 循环来做到这一点,但有更好的方法吗?
我有一个 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 = cellfun(@norm,num2cell(A,2));
此模式也适用于您可能希望在 MATLAB 本身不支持的情况下执行的其他一维操作。
如果第一个维度不是太大:
norms = sqrt(diag(A * A'));