0
我有一個實際上是256 x 256矩陣形式的圖像的數據。我想寫一個函數叫做「get.nbhd」,它爲一個像素選擇4個鄰居並將其存儲爲一個向量。然後在需要時調用該函數。如果像素是角落或邊界,則分別有2個和3個鄰居。這是一個玩具數據集。因此,對於任何中間像素,如d [i,j],這4個鄰居將是{d [i-1,j],d [i + 1,j],d [i,j + 1],d [i ,J-1]}。對於4個角像素,2鄰域將是{d [i,j-1],[i + 1,j]},{d [i,j + 1],d [i + 1,j] {d [i-1,j],d [i,j-1]},{d [i-1,j],d [i,j + 1]}。頂部和底部邊界像素將具有{d [i-1,j],[i + 1,j],d [i,j-1]}的3個鄰居。任何幫助表示讚賞。在R中獲取鄰居函數
> x<- matrix(rbinom(8*8,1,0.5),8,8)
> x
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 1 0 1 0 1 0
[2,] 1 1 0 1 0 1 1 1
[3,] 1 1 1 1 1 0 0 0
[4,] 1 1 1 0 1 1 1 1
[5,] 1 1 1 1 0 1 0 0
[6,] 1 1 1 0 0 1 1 1
[7,] 0 1 1 1 1 0 0 0
[8,] 0 1 0 0 0 1 1 0
非常感謝!這有很大幫助。還有一個問題。我如何修改這個函數來提取鄰居的索引而不是實際的值。當我開始編碼時,我意識到我還需要另一個返回鄰域索引的函數。例如,對於點d [1,1],該函數將d [1,2]和d [2,1]作爲鄰居索引。如果它不合適,我可以將它作爲另一個問題發佈。 – user24318
指數是在函數的第一行計算的。由此,您需要刪除具有無效索引的行。 (在函數中,我只將無效索引設置爲零,但您可能希望完全刪除它們。)如果這不足以幫助您,我認爲最好提出一個新問題。不要忘記首先在SO和Google上尋找有用的答案! – Stibu
謝謝。我能夠通過刪除零行來修改你的函數! – user24318