在MATLAB中对矩阵调用norm
时,它返回所谓的“矩阵范数”(标量值),而不是向量范数数组是否有任何方法可以在不循环和利用MATLAB的矢量化的情况下获得矩阵中每个向量的范数?
最佳答案
您可以通过使用element-wise arithmetic operators和定义为在给定矩阵维度上操作的函数(如SUM和MAX)自己计算矩阵的每列或每行的范数下面是如何计算矩阵的列规范:
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
,可以很容易地使这些规范对行而不是列进行操作。