如何更改矩阵

时间:2016-06-29 08:35:47

标签: r

我正在进行颜色分类。我提供输入作为正角度和负角度,角度也代表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()

我收到以下错误:

  
      
  1. rgb中的错误(t(wij [[x1,x2]]),maxColorValue = 255):颜色强度259,而不是0:255
  2.   
  3. rgb中的错误(t(wij [[x1,x2]]),maxColorValue = 255):颜色强度-5,不是0:255
  4.   

我们有任何方法来表示负数吗?RGB中的值超过255?

1 个答案:

答案 0 :(得分: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