2013-04-25 105 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