Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB到R语言的代码转换_R_Matlab_Syntax_Translate_Code Translation - Fatal编程技术网

MATLAB到R语言的代码转换

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

我正在尝试将一些代码从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);
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)