MATLAB到R语言的代码转换
我正在尝试将一些代码从MATLAB转换为R 我在转换微分方程的这一部分时遇到了特殊的问题: 在MATLAB中:MATLAB到R语言的代码转换,r,matlab,syntax,translate,code-translation,R,Matlab,Syntax,Translate,Code Translation,我正在尝试将一些代码从MATLAB转换为R 我在转换微分方程的这一部分时遇到了特殊的问题: 在MATLAB中: dA.*(A*N - N.*sum(A,2)) 其中dA为整数,A为10x10矩阵,N为10x1矩阵(见下面的示例代码) 到目前为止,在R中,我得到了: dA*(A*N - N*colSums(A)) 但出于某种原因,它似乎没有给出相同的结果。有人知道我做错了什么吗 下面是我使用的数据示例: 在MATLAB中: dA = 0.1; N = 120000*ones(1,nN); se
dA.*(A*N - N.*sum(A,2))
其中dA为整数,A为10x10矩阵,N为10x1矩阵(见下面的示例代码)
到目前为止,在R中,我得到了:
dA*(A*N - N*colSums(A))
但出于某种原因,它似乎没有给出相同的结果。有人知道我做错了什么吗
下面是我使用的数据示例:
在MATLAB中:
dA = 0.1;
N = 120000*ones(1,nN);
seq = [0 1 0 0 0 1 0];
seq2 = repmat(seq,1,20);
seq100 = seq2(1:100)
A = AA-diag(diag(AA));
在R中:
dAMatlab表达式:
dA.*(A*N - N.*sum(A,2))
在哪里
让我们在R中设置以下示例:
A = matrix(data = 1:100,nrow = 10)
N = matrix(data = 1:10)
dA = 0.1
> A
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 11 21 31 41 51 61 71 81 91
[2,] 2 12 22 32 42 52 62 72 82 92
[3,] 3 13 23 33 43 53 63 73 83 93
[4,] 4 14 24 34 44 54 64 74 84 94
[5,] 5 15 25 35 45 55 65 75 85 95
[6,] 6 16 26 36 46 56 66 76 86 96
[7,] 7 17 27 37 47 57 67 77 87 97
[8,] 8 18 28 38 48 58 68 78 88 98
[9,] 9 19 29 39 49 59 69 79 89 99
[10,] 10 20 30 40 50 60 70 80 90 100
> N
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
[7,] 7
[8,] 8
[9,] 9
[10,] 10
第一个术语是:
z1 = A %*% N
第二任期:
srow = rowSums(A)
z2 = srow * N
最终的结果是:
result = dA * (z1-z2)
最终方程式
result = dA * (A %*% N - rowSums(A)*N)
这将给出与Matlab的dA.*(A*N-N.*sum(A,2))
相同的答案,*
和*
在Matlab中是不同的数学运算,但是您将它们都转换为*
到R,所以我假设这就是问题所在。另外,你的矩阵是随机的,所以我希望它总是给出不同的结果!否则你会破坏随机数。这可能会有帮助:@AnderBiguri谢谢!我来看看。啊,是的,对不起,我应该包括我测试它时使用的非随机数据-我现在就更改它。@coffeinjunky谢谢!我来看看
result = dA * (z1-z2)
result = dA * (A %*% N - rowSums(A)*N)