2016-06-29 56 views
0

我正在处理颜色分类。我将输入作为正面和负面角度,角度也表示RGB颜色。当角度为负值或超过255时,我如何将负值更改为零或超过255至255的角度。此矩阵包含角度列表。每个列表都代表RGB。 我张贴一段代码这里:如何更改矩阵中存在的列表的特定值

library(rgl) 

som <- function() 
{ 
    rad2deg = function(rad) 
    { 
    return((180 * rad)/pi) 
    } 

    n <- 3 
    m <- 30 
    l <- 15 
    alpha <- .09 

    a <- list("numeric", n) 
    wij <- matrix(list(), nrow = m, ncol = m) 

    #Initailize the weight matrix 
    for(x1 in 1:m) 
    { 
    for(x2 in 1:m) 
    { 
     a <- runif((n-1), -pi/12, pi/12) 
     a<- rad2deg(a) 
     a <- c(a*8+128,255) 
     wij[[x1,x2]] <- a 
    } 
    } 

    s <- runif((n-1), -pi/12, pi/12) 

    theta <- rad2deg(s[1]) 
    theta <- 128+theta*8 

    phi <- rad2deg(s[2]) 
    phi <- 128+phi*8 

    x <- as.integer(l* sin(s[1]) + m/2) 
    y <- as.integer(l*sin(s[2]) + m/2) 

    for(x1 in 1:m) 
    { 
    for(x2 in 1:m) 
     wij[[x1,x2]] <- wij[[x1,x2]] +((x1-x)+(x2-y))*alpha*(wij[[x1,x2]]-c(theta,phi,255)) 
    } 

    for(x1 in 1:m) 
    { 
    for(x2 in 1:m) 
     rgl.spheres(x=x1, y=x2, col=rgb(t(wij[[x1,x2]]), maxColorValue =   255), radius = 1) 
    } 
}  

som() 

我得到如下错误:在RGB

  1. 误差(吨(WIJ [[X1,X2]]),maxColorValue = 255):颜色强度259,而不是在0:255
  2. 错误在RGB(吨(WIJ [[X1,X2]]),maxColorValue = 255):颜色强度-5,而不是在0:255

我们是否有任何方法来表示负数和RGB值超过255的值?

回答

0

你可以使用

get_valid_number <- function(number) {pmax(0,pmin(255,number))}

产生数介于0和255:

numbers <- c(-5, 42, 259) get_valid_number(numbers)

[1] 0 42 255