MatlabにはRプログラムに変換したいプログラムが1つあります。matlabのRの等価演算子/
MATLABプログラムである:Rは
function R = cprob(N,A,B)
R = ((A.*B)*N)/(B*N)
end
、 "*" は "%*の%" となり、 "*" が "*"。そして "/"?
MatlabにはRプログラムに変換したいプログラムが1つあります。matlabのRの等価演算子/
MATLABプログラムである:Rは
function R = cprob(N,A,B)
R = ((A.*B)*N)/(B*N)
end
、 "*" は "%*の%" となり、 "*" が "*"。そして "/"?
私は"/"
によってあなたはマトリックスの右の部門を意味することを理解しています。
frimのpracma
パッケージを使用できます。これを見てください。
https://www.rdocumentation.org/packages/pracma/versions/1.9.9/topics/mldivide
これはあなたのコードのようになります。
library("pracma")
a1 = matrix(c(1,2,0,2,5,-1,4,10,-1),nrow=3,ncol=3)
a2 = matrix(c(1,2,4,2,5,10,0,-1,-1),nrow=3,ncol=3)
a3= matrix(c(1,0,0,0,1,0,0,0,1),nrow=3,ncol=3)
myfunction<-function (N,A,B) {
return(round(mrdivide((A*B)%*%N,B %*% N)))
}
result_matrix<-myfunction(a1,a2,a3)
あなたがコメントで述べた結果を与えます。
: a1 = [1 2 0; 2 5 -1; 4 10 -1] a2 = [1 2 4; 2 5 10; 0 -1-1] a3 = [1 0 0; 0 1 0; Matlabのcprob(A2、A1、A3)0 0 1] : 1 -0 -0 0~5 -0 0 -0 -1 機能cprob <付きRは - 関数(N 、A、B){ リターン(mrdivide((* b)は%※%N、Bの%*%以下のN)) } Iは、異なる結果を有する: 13.8 32 -2.4 -6.4 -15 1.2 -4.8 -12 1.4 –
こんにちは。私は同じ結果を得る。私のコードをチェックしてください! – Neoromanzer
あなたは正しいです! :)。しかし、私は@ANGによって提案された解決策に従って、私は書いた: cprob < - function(N、A、B){ return(((A * B)%*%N)%*%solve(B%*%N )) } 私を助けてくれてどうもありがとう。 :) –
誰もがmatlabを知っているわけではありません。これが再現可能な例が推奨される理由です。 '/'は何をmatlabで行うのですか? [編集] –
行列の除算は一意には定義されておらず、 'ginv'が一般化されている' ginv(B)%*%A'または 'A%*%ginv(B)'のいずれかです。 。 – dww
[This](https://stackoverflow.com/questions/20116607/r-right-matrix-division)助けることができます – ANG