#高斯 #随机 #

rugfield

使用循环嵌入方法生成高斯随机场(GRF)的Rust库

4次发布

0.2.2 2024年5月15日
0.2.1 2024年4月7日
0.2.0 2024年4月4日
0.1.0 2024年3月19日

#114 in 科学

31 每月下载量

MIT 许可证

12KB
137

Rugfield

Rugfield 是一个使用循环嵌入方法生成高斯随机场(GRF)的Rust库。它提供了一个高效且易于使用的实现,用于模拟具有各种核函数的GRF。

特性

  • 使用循环嵌入方法生成GRF
  • 支持各种核。
    • 平方指数
    • Matern
    • 局部周期
    • 有理二次
  • 使用 rustfft 库进行高效计算
  • 可选的 serde 特性序列化支持

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
rugfield = "0.2.2"

使用方法

以下是一个如何使用 Rugfield 生成具有平方指数核的GRF的简单示例

use rugfield::{grf, Kernel};

fn main() {
    let n = 100;
    let kernel = Kernel::SquaredExponential(0.1);
    let grf_data = grf(n, kernel);

    // Plot the GRF data
    // ...
}

此代码生成一个具有平方指数核和长度尺度为0.1的GRF。生成的GRF数据存储在 grf_data 向量中。

有关完整示例,请参阅 examples/squared_exponential.rs 文件

use peroxide::fuga::*;
use rugfield::{grf, Kernel::SquaredExponential};

fn main() -> Result<(), Box<dyn Error>> {
    let x_max = 100.0;
    let x_min = 0.0;
    let sigma = 0.1;
    let n = 1000;
    let samples = 8;
    let kernel = SquaredExponential(sigma);
    let x = linspace_with_precision(x_min, x_max, n, 2);
    let grfs = (0..samples).map(|_| grf(n, kernel)).collect::<Vec<_>>();

    // Plot the GRF data
    // ...

    Ok(())
}

使用特定的随机数生成器

use peroxide::fuga::*;
use rugfield::{grf_with_rng, Kernel::SquaredExponential};

fn main() -> Result<(), Box<dyn Error>> {
    let n = 100;
    let kernel = SquaredExponential(0.1);
    let mut rng = stdrng_from_seed(42);
    let grf_data = grf_with_rng(&mut rng, n, kernel);
    // ...
}

上述代码生成多个具有平方指数核的GRF并绘制结果数据。以下是一个示例输出

Squared Exponential GRF

文档

有关详细文档和API参考,请参阅 Rustdoc 文档

许可证

Rugfield 在 MIT 许可证 下授权。

贡献

欢迎贡献!如果您发现任何问题或对改进有建议,请在 GitHub 仓库 上打开问题或提交拉取请求。

致谢

Rugfield 受到Grace Chan(1999年)的论文《一种有效的模拟高斯随机场的方法》的启发。我们衷心感谢 rustfft 库的作者们出色的作品,这对Rugfield的开发至关重要。

依赖项

~7.5MB
~148K SLoC