R:沿任意线找到2D函数的值(由矩阵给出)

时间:2016-11-09 00:57:06

标签: r matrix

我有一个描述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中有一种简单的方法吗?

此致

1 个答案:

答案 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

因为索引被截断,所以当参数不是整数时,值不必是最近点的值。