2010-07-16 56 views
4
對角矩陣

誰能告訴我如何反之亦然,以取代0與1的和爲R.取代0與1的和R中

對角矩陣 反之亦然
+0

我想你使用的是R編程語言? http://en.wikipedia.org/wiki/R_(programming_language) – shookster 2010-07-16 02:24:53

+0

@shookster是的,我使用R編程 – Shruti 2010-07-16 03:19:39

回答

14

如果MATR IX是墊和要翻轉全1爲0 ...

mat <- 1-mat 
+0

+1啊。這是有道理的......我可能會想到這一點。 – shookster 2010-07-16 02:45:36

0

由於矩陣被存儲在數字,類型整數/雙,和存儲模式的整數的模式/雙(假設矩陣保持數值)可以使用簡單的方括號索引來解決它們中的特定值,例如現在

# create dummy data 
> m <- matrix(rnorm(25), 5) 
> mode(m) # check mode 
[1] "numeric" 
> typeof(m) # check type 
[1] "double" 
> storage.mode(m) 
[1] "double" 

,以創建對角矩陣,則可以分別使用lower.triupper.tri功能,這爲矩陣元素返回下面和上面的主對角線邏輯值。

可以使用lower.triupper.tri功能非對角線元素設置爲0。

> m[lower.tri(m)] <- 0 
> m[upper.tri(m)] <- 0 
> m 
      [,1]  [,2]  [,3]  [,4]  [,5] 
[1,] 0.3356640 0.0000000 0.0000000 0.000000 0.0000000 
[2,] 0.0000000 -0.2940369 0.0000000 0.000000 0.0000000 
[3,] 0.0000000 0.0000000 -0.4490546 0.000000 0.0000000 
[4,] 0.0000000 0.0000000 0.0000000 -1.093924 0.0000000 
[5,] 0.0000000 0.0000000 0.0000000 0.000000 0.3199157 

可以,當然,設置的任何常數以降低/上對角元素,無論是數字的,字符,邏輯,NA等...

將零設置爲非對角元素後,可以簡單地使用方括號索引。小轉向:裸記住,數學,向量矩陣(和反之亦然)的特殊情況,但同樣並不代表[R

> is.vector(m) 
[1] FALSE 
> is.matrix(1:10) 
[1] FALSE 

但是,最後,你可以做:

> m[m == 0] <- 1 

這將插入1矩陣,無論哪裏出現零。您可以使用diag功能訪問/修改對角線元素,例如:

> m[m == 1] <- 0 
> diag(m) <- rep(pi, 5) 

將你的對角矩陣,切換到標之一。

我這個無聊的文章後,讓我們大家都希望它能幫助別人,莫名其妙......

乾杯!

+0

爲了讓你更加迷惑,試試'm [lower.tri(m)] < - 1:10',看看會發生什麼。 =) – aL3xa 2010-07-16 11:14:03

+0

@ aL3xa謝謝。 – Shruti 2010-07-17 03:03:38