2016-11-09 48 views
0

值我有描述2D表面的基質,我需要能夠計算沿表面值的任意直線。R:查找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) 

我想要做的是在價值得到M的值一起從(X1,Y1)到(x2,y2)的線,例如(xvec,yvec)其中xvec = seq(x1,x2,length.out = N),同樣對於yvec。

有沒有一種簡單的方法來做到這一點在R?

真誠

+0

到目前爲止您嘗試了哪些方法? – dww

+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 

因爲索引會被截斷,價值觀贏得當參數不是整數時,必須是最近點的那些點。

+0

當然!輝煌! 非常感謝 – stuttungr