rdivide(matlab)在R语言中的等价函数

时间:2017-01-30 04:30:23

标签: r matlab matrix-multiplication

R中rdivide的等效函数是什么?在我的情况下,我有一个数值算法A,B和C的矩阵。我需要得x,使得x = C ./(​​AA')。在matlab中,我可以使用rdivide来完成它。但是我需要在R中这样做。所以在这里给出一个可重现的例子是一些matlab代码。注意det(AA')= 0。 A'是A的转置。

 % 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)

1 个答案:

答案 0 :(得分:1)

rdivide中的

matlab等同于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