2017-01-30 65 views
0

R中rdivide的等效函數是什麼?在我的情況下,我有一個數值算法A,B和C的矩陣。我需要得到x使得x = C ./(​​AA')。在matlab中,我可以使用rdivide來完成它。但是我需要在R中這樣做。所以爲了給出一個可重複的例子,這裏有一些matlab代碼。注意det(AA')= 0。其中,A」在matlab被轉置A.R語言中rdivide(matlab)的等效函數

% matlab code 
    t=6 
A = raylrnd(0.05,t,1)+0.09; 
B = gallery('randcorr',t); 
C = spdiags(A,0,t,t) * B * spdiags(A,0,t,t); 
x=C ./(A*A') 

#Rcode 
install.packages("Runuran","fifer") 
library("Runuran") 
library("fifer") 
t=6 
A = as.matrix(urrayleigh(t,0.05)+0.09) 
B <- random.correlation (t, ev = runif(t, 0, 1)) 
C= Diagonal(t,A) %*% B %*% Diagonal(t,A) 
+0

錯誤:'無法找到函數 「urrayleigh」' –

+0

如果你和一個可能的輸入的例子所需的輸出編輯(可再現兩種語言,理想情況下),你更有可能得到答案。 – alistaire

+0

剛剛編輯了更多信息的問題。我還添加了具有我使用的功能的R包。 – user24318

回答

1

rdivide的相當於R兩個矩陣的元素乘元件分割。

Matlab的

A = [1:3; 4:6; 7:9] 

# A = 
# 
# 1  2  3 
# 4  5  6 
# 7  8  9 

B = [11:13; 14:16; 17:19] 

# B = 
# 
# 11 12 13 
# 14 15 16 
# 17 18 19 

rdivide(A,B) 

# ans = 
# 
# 0.0909 0.1667 0.2308 
# 0.2857 0.3333 0.3750 
# 0.4118 0.4444 0.4737 

[R

A <- t(matrix(1:9, nrow = 3, ncol = 3)) 
B <- t(matrix(11:19, nrow = 3, ncol = 3)) 
A 
#  [,1] [,2] [,3] 
# [1,] 1 2 3 
# [2,] 4 5 6 
# [3,] 7 8 9 

B 
#  [,1] [,2] [,3] 
# [1,] 11 12 13 
# [2,] 14 15 16 
# [3,] 17 18 19 

A/B 

#   [,1]  [,2]  [,3] 
# [1,] 0.09090909 0.1666667 0.2307692 
# [2,] 0.28571429 0.3333333 0.3750000 
# [3,] 0.41176471 0.4444444 0.4736842