当前位置: 首页 > 知识库问答 >
问题:

计算相邻像素随时间的平均相关性

逄边浩
2023-03-14

我有一堆4个光栅。我想要一个像素和它的8个相邻像素之间的平均时间相关性。

一些数据:

library(raster)  

r1=raster(matrix(runif(25),nrow=5))
r2=raster(matrix(runif(25),nrow=5))
r3=raster(matrix(runif(25),nrow=5))
r4=raster(matrix(runif(25),nrow=5))
s=stack(r1,r2,r3,r4)

因此,对于位置x处的像素,在NE、E、SE、S等位置有8个相邻像素,我想要

cor(x,NE)
cor(x,E)
cor(x,SE)
cor(x,S)
cor(x,SW)
cor(x,W)
cor(x,NW)
cor(x,N)

以及保存在结果光栅中位置x处的平均值。边缘单元格将是NA,或者,如果可能的话,使用一个标志来计算与它所接触的单元格(3或5个单元格)的平均相关性。谢谢

共有1个答案

蓝星辰
2023-03-14

我不相信@Pascal使用焦点()的建议会奏效,因为焦点()将单个光栅层作为参数,而不是堆栈。这是最容易理解的解决方案。可以通过最大限度地减少为每个焦点单元格提取值的次数来提高效率:

library(raster)  

set.seed(2002)
r1 <- raster(matrix(runif(25),nrow=5))
r2 <- raster(matrix(runif(25),nrow=5))
r3 <- raster(matrix(runif(25),nrow=5))
r4 <- raster(matrix(runif(25),nrow=5))
s <- stack(r1,r2,r3,r4)

##  Calculate adjacent raster cells for each focal cell:
a <- adjacent(s, 1:ncell(s), directions=8, sorted=T)

##  Create column to store correlations:
out <- data.frame(a)
out$cors <- NA

##  Loop over all focal cells and their adjacencies,
##    extract the values across all layers and calculate
##    the correlation, storing it in the appropriate row of
##    our output data.frame:
for (i in 1:nrow(a)) {
    out$cors[i] <- cor(c(s[a[i,1]]), c(s[a[i,2]]))
}

##  Take the mean of the correlations by focal cell ID:
r_out_vals <- aggregate(out$cors, by=list(out$from), FUN=mean)

##  Create a new raster object to store our mean correlations in
##    the focal cell locations:
r_out <- s[[1]]
r_out[] <- r_out_vals$x

plot(r_out)
 类似资料:
  • 问题内容: 我有计算纯python中相邻元素之间差异的算法: 有什么办法可以用Numpy重写此功能? 问题答案: 有方法: 退货

  • 本文向大家介绍php时间计算相关问题小结,包括了php时间计算相关问题小结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了php时间计算相关问题。分享给大家供大家参考,具体如下: 1. php获取三个月前的日期 2. 计算日期30天后 可以用strtotime PHP提供了一个超级简单的方式来完成本来要几十行代码的工作。 先把某日期转换成UNIX时间戳 3. 转换2日期的时间戳...然后相

  • 这个 邻接列表 模式是一种常见的关系模式,通过该模式,表包含对其自身的外键引用,换言之,是 自指关系 。这是在平面表格中表示分层数据的最常见方式。其他方法包括 嵌套集 ,有时称为“修改的预购”,以及 物化路径 。尽管在评估SQL查询内的流畅性时,修改的预排序很有吸引力,但由于并发性、降低复杂性的原因,邻接列表模型可能是最适合大多数分层存储需求的模式,而且与可以将子树完全加载到应用程序空间的应用程序

  • 我有一个(可能很大的)列表,包含三个小的非负整数元组,比如 我想对中的元组进行排序,以便相邻的元组(和)“尽可能相似”。 定义两个三元组的不相似性为它们之间不相等的元素的数量。例如。 vs.:差异. vs.:差异. vs.:差异. vs.:差异. vs.:差异. 问题:寻找排序的好算法是什么,它可以最小化所有相邻三元组之间的差异之和? 下面是一个计算两个三元组之间差异的函数: 这里有一个函数,它计

  • 问题内容: 在中,我使用或计算成对互相关函数,以便找出哪个偏移使我获得了最大值。从它的外观来看,给了我一个规范化的值序列。Python的scipy中是否有类似的东西,还是应该使用该模块?目前,我正在执行以下操作: 问题答案: 要使一维数组互相关,请使用numpy.correlate。 对于2d数组,请使用scipy.signal.correlate2d。 还有scipy.stsci.convolv

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印