2013-04-25 491 views
4

我在Matlab中找到norm函数,并检查了它的文档,但是我不清楚。你能澄清一下它到底做了什么吗?matlab中的“norm”是什么?

此外,当选择inf时,基于文档“返回无穷范数”,这是什么意思?

+4

此问题属于http://math.stackexchange.com/(或类似的维基百科) – Oleg 2013-04-25 11:03:34

+0

@OlegKomarov - 第二部分属于数学,但第一部分属于这里。 – Shai 2013-04-25 11:09:19

+0

@Shai不同意 - 文档不清楚,因为提问者显然对向量和矩阵规范知之甚少。当然,人们可以告诉他“它将矢量或矩阵映射为标量,或将矢量映射为标量矢量”,但如果他不知道规范是什么,那么它并不是特别有意义。 – user1207217 2013-04-25 11:19:10

回答

3

Matlab的提供矢量和矩阵的规范和规范 矩阵的范数norm函数计算几种不同类型的矩阵的是一个标量,使该矩阵的元素的量值的某种度量。该规范函数计算几种不同类型的矩阵规范:

n = norm(A) returns the largest singular value of A, max(svd(A)). 

现在infThe infinity normlargest row sum of Amax(sum(abs(A')))
注意norm(A),其中A是n元向量,是A的长度,你还可以找到root-mean-square (RMS)值由norm(A)/sqrt(n)
请注意,norm(x)是向量x的欧几里得长度。另一方面,MATLAB使用长度来表示向量中元素的数量n。此示例使用norm(x)/ sqrt(n)来获得n元素向量x的均方根(RMS)值。
作为一个例子

x = [0 1 2 3] 
x = 
    0  1  2  3 

sqrt(0+1+4+9) % Euclidean length 
ans = 
    3.7417 

norm(x) 
ans = 
    3.7417 

n = length(x) % Number of elements 
n = 
    4 

rms = 3.7417/2 % rms = norm(x)/sqrt(n) 
rms = 
    1.8708 
1

norm只是计算vectormatrix的范数。在大多数情况下,你有兴趣在所谓的Euclidean规范,这就是为什么在默认情况下MATLAB将调用

norm(X,2) == norm(X) 

如果您在p尺寸的空间,我们可能会认为使用标准具有更高的层面。

你的问题更多的与纯数学背景,这样我就建议你获得良好的代数几何&教科书:Google可能也有帮助,以及wiki

我希望这会有所帮助。

编辑

在你的情况,我想我会去这样

pdist2(Cluster,Centroid) 

这将从Centroid定义你的Cluster每个元素的距离。

+0

感谢您的回复。那么,换句话说,“规范”与“距离”一样吗? – Simplicity 2013-04-25 11:16:05

+0

@ Med-SWEng不,距离相当于一个特定的标准情况,但我认为标准更一般 – Dan 2013-04-25 11:19:39

+1

@ Med-SWEng:我认为你缺少一些数学基础知识 – fpe 2013-04-25 11:20:28

13

规范将每个值都提升为一个幂,然后将它们相加,然后取根(第th个根)。您可以识别2个计算

数据之间的距离从2规范:2,3,5

2 norm: square root(2^2 + 3^2 + 5^2) 
3 norm: cube root(2^3 + 3^3 + 5^3) 
4 norm: 4th root(2^4 + 3^4 + 5^4) 

等等等等

有趣的是:

99999 norm = 99999th root(2^99999 + 3^99999 + 5^99999) approximately equals 5 (the largest value) 

所以:

infinity norm= infinityth root(2^infinity + 3^infinity + 5^infinity)=5 

基本上,无限标准最终成为最大的价值

+0

感谢您的回复。所以,如果我们有以下'范数([x(i)-y(j)]'),它在数学中是什么样子? – Simplicity 2013-04-25 11:14:58

+0

,它很大程度上依赖于x(i)和y(j)是什么,它们是否在一个循环中改变i和j,并且是x(i)和y(j)单个数字或行的数字。整个代码会让我知道 – 2013-04-25 11:21:35

+0

@ Med-SWEng表示[x(i)-y(j)]将首先被计算,然后被馈送到函数中,所以把它放到matlab的一行中(没有任何;最后),你会看到什么matlab被送入主函数,然后它会像处理我的主要答案那样处理 – 2013-04-25 12:33:08