2017-11-16 9 views
-1

MatlabにはRプログラムに変換したいプログラムが1つあります。matlabのRの等価演算子/

MATLABプログラムである:Rは

function R = cprob(N,A,B) 
    R = ((A.*B)*N)/(B*N) 
end 

、 "*" は "%*の%" となり、 "*" が "*"。そして "/"?

+0

誰もがmatlabを知っているわけではありません。これが再現可能な例が推奨される理由です。 '/'は何をmatlabで行うのですか? [編集] –

+0

行列の除算は一意には定義されておらず、 'ginv'が一般化されている' ginv(B)%*%A'または 'A%*%ginv(B)'のいずれかです。 。 – dww

+0

[This](https://stackoverflow.com/questions/20116607/r-right-matrix-division)助けることができます – ANG

答えて

0

私は"/"によってあなたはマトリックスの右の部門を意味することを理解しています。

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) 

あなたがコメントで述べた結果を与えます。

+0

: 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 –

+0

こんにちは。私は同じ結果を得る。私のコードをチェックしてください! – Neoromanzer

+0

あなたは正しいです! :)。しかし、私は@ANGによって提案された解決策に従って、私は書いた: cprob < - function(N、A、B){ return(((A * B)%*%N)%*%solve(B%*%N )) } 私を助けてくれてどうもありがとう。 :) –

関連する問題