我正在进行颜色分类。我提供输入作为正角度和负角度,角度也代表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中的错误(t(wij [[x1,x2]]),maxColorValue = 255):颜色强度259,而不是0:255
- rgb中的错误(t(wij [[x1,x2]]),maxColorValue = 255):颜色强度-5,不是0:255
醇>
我们有任何方法来表示负数吗?RGB中的值超过255?
答案 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