首页 文章

光谱数据的多项式拟合

提问于
浏览
-1

我想在我的所有光谱带(Landsat 1-7)上的每个栅格单元上拟合多项式函数(最大3阶),创建表示系数的新栅格(堆栈) . 我在6层(Landsat Band 1-7 [不包括6])的堆栈中得到了我的数据(包括NA值) .

我猜不知道我应该告诉多项式函数关于频带所在的光谱波长

  • Landsat7波长(微米)

  • 乐队1 0.45-0.52

  • 乐队2 0.52-0.60

  • 乐队3 0.63-0.69

  • 乐队4 0.77-0.90

  • 乐队5 1.55-1.75

  • 乐队7 2.09-2.35

这样它可以正确地适应它 . 有谁知道如何对每个单元格进行多项式拟合并提取R中的系数?谢谢你的帮助!

1 回答

  • 1

    你的问题不是很明确,因为你没有说明你的拟合 . 我猜这是乐队号码 . 你可以做这样的事情 .

    library(raster)
    b <- brick(system.file("external/rlogo.grd", package="raster"))
    b[[2]][125:225] <- NA
    s <- stack(b, flip(b, 'y'))
    names(s) <- paste0('b', 1:6)
    bands <- 1:6
    f <- function(x) {
        # in case of NAs; match the number of coefficients returned
        if (any(is.na(x))) return(c(NA, NA, NA))
        m <- lm(x ~ bands + I(bands^2))
        coefficients(m)
    }
    z <- calc(s, f)
    z
    plot(z)
    

    如果您需要加快速度,可以按照以下示例进行操作:https://gis.stackexchange.com/questions/144211/want-cell-linear-regression-values-for-a-netcdf-or-multi-band-raster/144408#144408

相关问题