私は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 がネイティブにサポートしていない場合に、実行したい 1 つの次元に沿った他の操作にも適応できます。
最初の次元が大きすぎない場合:
norms = sqrt(diag(A * A'));