Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.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
R中更有效的矩阵运算_R - Fatal编程技术网

R中更有效的矩阵运算

R中更有效的矩阵运算,r,R,我试图计算R中两个离散概率分布的卷积。我有两个向量,每个向量都包含概率。我需要计算第三个向量,它具有前两个向量的组合概率。第三个向量中的第i个位置包含所有j+k=i的概率之和(a[j]*b[k])。 我有以下功能来执行此操作: convolute <- function(a, b ){ out <- rep(0, (length(a)+741)) for(i in 1:length(a)){ for (j in 1:length(b)){

我试图计算R中两个离散概率分布的卷积。我有两个向量,每个向量都包含概率。我需要计算第三个向量,它具有前两个向量的组合概率。第三个向量中的第i个位置包含所有j+k=i的概率之和(a[j]*b[k])。 我有以下功能来执行此操作:

convolute <- function(a, b ){

    out <- rep(0, (length(a)+741))

    for(i in 1:length(a)){

        for (j in 1:length(b)){

            out[i + j] <- out[i+j] + (a[i]*b[j])


        }
    }

    return(out)
}
卷积
与函数相同,只是函数以0开头,而
卷积不:

> a <- runif(1000, 0, 1)
> b <- runif(741, 0, 1)
> c1 <- convolute(a, b)
> c2 <- convolve(a, rev(b), type="open")
> 
> all.equal(c1[-1], c2)
[1] TRUE
> system.time(c1 <- convolute(a, b))
   user  system elapsed 
  4.152   0.000   4.155 
> system.time(c2 <- convolve(a, rev(b), type="open"))
   user  system elapsed 
  0.000   0.000   0.001 
>a b c1 c2
>全部相等(c1[-1],c2)
[1] 真的
>系统时间(c1系统时间(c2
与函数相同,只是函数以0开头,而
卷积不:

> a <- runif(1000, 0, 1)
> b <- runif(741, 0, 1)
> c1 <- convolute(a, b)
> c2 <- convolve(a, rev(b), type="open")
> 
> all.equal(c1[-1], c2)
[1] TRUE
> system.time(c1 <- convolute(a, b))
   user  system elapsed 
  4.152   0.000   4.155 
> system.time(c2 <- convolve(a, rev(b), type="open"))
   user  system elapsed 
  0.000   0.000   0.001 
>a b c1 c2
>全部相等(c1[-1],c2)
[1] 真的

>你能给我们看一些输入数据(
a
b
)和你期望的
out
的样子吗?你有没有尝试过
卷积
R函数?谢谢。卷积函数可以工作。(输入数据是0-1范围内的概率,因此总和(a)=1),输出也有这个属性)你能给我们看一些输入数据(
a
b
)和你期望的
out
的样子吗?你试过
卷积
R函数吗?谢谢。卷积函数可以工作。(输入数据是0-1范围内的概率,因此总和(a)=1),输出也有此属性)谢谢。我以前使用过Convalve(用于稍有不同的用途),但它不适用于此,因此我不想在此处使用它。谢谢。我以前使用过Convalve(用于稍有不同的用途),但它不适用于此,因此我不想在此处使用它。