0
我想從一個函數中創建一個im對象,該函數根據相對於固定線的距離來分配一個值,即,如果該點離開如果這條線靠近該線,則該線的值接近零並且相反。我創建了以下功能:R:從一個函數創建一個im對象,作爲我的模型的協變量
library(spatstat)
W <- owin(xrange = c(-0.5, 4.5), yrange = c(-0.5, 3.5))
covValue <- function(x, y) {
# defining the segment AB
b <- W$yrange[2] + 2
A <- c(W$xrange[1], b)
I <- c(W$xrange[2], W$yrange[2])
m <- (I[2] - A[2])/(I[1] - A[1])
B <- c((W$yrange[1] - b)/m, 0)
C <- c(x, y)
C <- c(4.5, 3.5)
x1 <- A[1]
y1 <- A[2]
x2 <- B[1]
y2 <- B[2]
x3 <- C[1]
y3 <- C[2]
# calculating the orthogonal point D that belongs to the segment AB with respect to a given point C = (x,y) inside the observation window
px <- x2 - x1
py <- y2 - y1
dAB <- px * px + py * py
u <- ((x3 - x1) * px + (y3 - y1) * py)/dAB
xr <- x1 + u * px
yr <- y1 + u * py
D <- c(xr, yr)
# t<-((C[1]-A[1])*(B[1]-A[1])+(C[2]-A[2])*(B[2]-A[2]))/((B[1]-A[1])^2+(B[2]-A[2])^2)
# Dx=A[1]+t*(B[1]-A[1])
# Dy=A[2]+t*(B[2]-A[2])
# if the point C is away from the segment AB, this has less value
dist <- sqrt((C[1] - D[1])^2 + (C[2] - D[2])^2)
value <- 1/exp(dist)
return(value)
}
功能工作正常,現在我嘗試創建IM對象:
imagen <- as.im(covValue, W = W)
我得到這個錯誤:
Error: length(mat) == length(xcol) * length(yrow) is not TRUE
可有人請幫助我,謝謝。
不熟悉這個軟件包,但是試試像這樣:'imagen < - as.im(covValue(1,1),W = W)'。 – jsb
另外,我看不到在函數參數中使用'x'和'y'的位置... – jsb
@Samuel:我正在使用spatstat軟件包的書中的示例模板:f < - function(x,y (f,W =平方(6)){15 *(cos(sqrt((x-3)^ 2 + 3 *(y-3)^ 2)))^ 2}> A < - as.im – LFRC