我有3列,n行矩陣:應用規範函數矩陣的行 - Matlab的
[ 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行矩陣:應用規範函數矩陣的行 - Matlab的
[ 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))?
取決於你的座標是否以行或列。
您的意思是「座標以列或行」。 sum(...,1)將每列累加,sum(...,2)累加到每行。 – Robino
如果可讀性是一個更大的代價比的性能,你也可以考慮:
norms = cellfun(@norm,num2cell(A,2));
這種模式也適用於沿着一個其他操作您可能希望在MATLAB本身不支持的地方執行維度。
其實這也是我的問題。在我的情況下,我必須評估其座標在矩陣行中的粒子位置的標準。我通常做的是:'norms = sqrt(A(:,1)。^ 2 + A(:,2)。^ 2 + A(:,3)。^ 2)'。但我強烈懷疑存在一種更聰明的方法;)。 – Acorbe