将代码从 MATLAB 转换为 R

Converting code from MATLAB to R

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

dA <- 0.1                          
N <- c(120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000)
num_zeros_int <- zeros(70, 1)
num_ones_int <- ones(30, 1)
seq <- c(0,1,0,0,0,1,0)
seq2<- rep(seq, times = 20)
seq100 <- seq2[0:100]
int_mat <- matrix(seq100, nests, nests)                            

Matlab 表达式:

dA.*(A*N - N.*sum(A,2))

哪里

dA: real number
A: 10 x 10 matrix
N: 10 X 1 matrix
A*N: matrix multiplication
sum(A,2): sum of rows in A (10x1 matrix)
N.*sum(A,2): element by element multiplication (10 x 1 matrix)

让我们在 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))

相同的答案