【发布时间】:2019-04-12 08:32:06
【问题描述】:
我的数据看起来像这样,X 和 Y 是缺陷的中心。我想在矩阵中分配缺陷。
defect_ID X Y X_range Y_range
1 2 3 5 0
2 7 12 1 2
我创建了一个只有 0 的 200*200 矩阵。我想通过以下方式将 1 放入矩阵中:
每个坐标 X Y 将是 1。例如,我们可以看到 ID 1 这将允许 1 到我的坐标单元格 (2,3)。 ID 2 将允许 1 进入我的单元格 (7,12)。
我已经用代码做到了这一点
img<-matrix(0,200,200)
img[cbind(data[,X],data[,Y])]<-1
现在我想做一些棘手的事情。 我取一个defect_ID,我想使用我的X_range 和Y_range 值将值1 分配给这个缺陷周围的所有点。对于 1 个缺陷,我们取中心 (X,Y) 并使用 X 和 Y_range 移动。
伪代码
for defect_ID 1
img[X,Y]<-1
img[X+ 1:X_range,Y]<-1
img[X,Y+1:Y_range]<-1
例如,如果我们查看 ID 1,我想将 1 分配给点 (2,3),(3,3),(4,3),(5,3),(6,3), (7,3)
如果我有 X_range 和 Y_range>1。 X Y 将是中心。然后我想当时只朝一个方向移动。 例如,对于 ID 2,我想将 1 分配给我的单元格 (7,12),(8,12),(7,13),(7,14)
【问题讨论】:
-
你说“移动”是什么意思?!
-
我的意思是使用 X_range 和 Y_range 值修改相邻单元格;对于缺陷 1,中心为 (2,3),X_range=c(1,2,3,4,5)。所以我想找到单元格 (2+1,3),(2+2,3)... 并将它们赋值为 1。可能是“移动”不是合适的词。