在MATLAB中对矩阵调用norm时,它返回所谓的“矩阵范数”(标量值),而不是向量范数数组是否有任何方法可以在不循环和利用MATLAB的矢量化的情况下获得矩阵中每个向量的范数?

最佳答案

您可以通过使用element-wise arithmetic operators和定义为在给定矩阵维度上操作的函数(如SUMMAX)自己计算矩阵的每列或每行的范数下面是如何计算矩阵的列规范:

twoNorm = sqrt(sum(abs(M).^2,1)); %# The two-norm of each column
pNorm = sum(abs(M).^p,1).^(1/p);  %# The p-norm of each column (define p first)
infNorm = max(M,[],1);            %# The infinity norm (max value) of each column

通过将维度参数从M更改为...,1,可以很容易地使这些规范对行而不是列进行操作。

10-08 20:21