R:实现迭代条件模式技术

时间:2015-05-17 19:48:59

标签: r syntax

我的问题主要是语法问题,这是由我模糊的编程能力引起的。

我已经实现了能量函数:

NRG <- function(y, x, h, beta, eta){
    y2 <- addmargins(y, FUN=function(y) 1)
    neigh <- matrix(nrow=nrow(y), ncol=ncol(y))
    for (i in 1:nrow(y)) {
        for (j in 1:ncol(y)) {
        neigh[i,j] <- sum(prod(y[i,j], y2[i-1, j]),+ prod(y[i,j], y2[i, j-1]) + 
            prod(y[i,j], y2[i+1, j]) + prod(y[i,j], y2[i, j+1]))
        }   
        }
    E <- h * sum(y) - beta * sum(neigh) - eta * sum(y*x)
    return(E)
}

然后我想使用ICM技术找到能量最低的配置。

我的数据= y我想要迭代的是一个尺寸为300x300的矩阵,每个值都是-1或+1。 x最初是y的副本。 我最初的方法是创建一个矩阵作为副本,每个值乘以-1 = rv_y。然后我会迭代我的数据的每个值,并将x中的每个值替换为rv_y的值,如果它在我的功能NRG中给出一个较低的值:

ICM <- function(y, x, h, beta, eta){
    rv_y <- y*-1
    for (i in 1:y){
        if (NRG(y, x, h, beta, eta) > NRG(rv_y, x, h, beta, eta)) {
            x[i] <- x[i*-1]
        }
    }
    return(x)
}

我是在正确的轨道上还是我的方法错了?

0 个答案:

没有答案