2017-01-30 10 views
0

Rのrdivideの等価関数は何でしょうか?私の状況では、数値アルゴリズムA、B、Cから行列が出てきます。x = C・/(AA ')となるようなxを得る必要があります。 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内の2つの行列の要素ごとの除算に相当します。

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 
関連する問題