2016-06-29 88 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