我有一个描述2D表面的矩阵,我需要能够沿着曲面计算任意直线的值。
最好用一个例子来解释
#x and y axes
x=c(1:100)
y=c(1:100)
# 2D Matrix function defined as 0 except for a middle box filled with 1
M=matrix(0,nrow=100,ncol=100)
M[40:60,40:60]=1
# define two points
x1=50
y1=50
x2=23
y2=80
# plot contour graph of M, add points (x1,y1) and (x2,y2)
# and a line connecting the two
contour(x,y,M)
points(x1,y1,col=2)
points(x2,y2,col=3)
lines(c(x1,x2),c(y1,y2),lty=2)
我想要做的是从(x1,y1)到(x2,y2)的线获得M的值,例如在值(xvec,yvec)处得到x,其中xvec = seq(x1,x2,length .out = N)同样适用于yvec。
在R中有一种简单的方法吗?
此致
答案 0 :(得分:1)
使用“[”函数的容量来接受两列矩阵(这里假设为N <- 20
)实际上非常容易:
M[ cbind(xvec,yvec) ]
[1] 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0
因为索引被截断,所以当参数不是整数时,值不必是最近点的值。