在Julia中使用delay_fnn函数时出现StackOverflow错误求助
解决delay_fnn()函数StackOverflow错误的方案
可能的原因
StackOverflow错误通常是计算量过大、递归调用过深,或是Julia默认栈空间不足导致的。你的场景中,10000个数据点在计算虚假最近邻(FNN)时,随着嵌入维度提升,需要处理的点对数量会急剧膨胀,容易触发栈溢出。
具体解决步骤
- 减少数据点数量:先使用更小的数据集测试,比如将
rec = f[1:2000,2],验证函数能否正常运行。如果可行,再逐步增加数据量,找到性能与计算需求的平衡点。 - 设置Theiler窗口:调用
delay_fnn时添加Theiler窗口参数w,避免计算点与自身或时间上过于接近的点的距离,减少无效计算。示例:
Theiler窗口取值建议参考数据的时间相关性,一般设为延迟τ的2-5倍。plot(delay_fnn(rec, τ, 1:10; w = 5)) - 增大Julia栈空间:启动Julia时手动设置更大的栈大小,比如:
单位为KB,8192对应8MB,可根据需求调整。julia --stack-size=8192 - 更新DynamicalSystems包:确保使用最新版本的包,避免旧版本bug导致栈溢出:
using Pkg Pkg.update("DynamicalSystems")
内容的提问来源于stack exchange,提问作者Manav Karthikeyan
相关产品推荐
相关产品推荐

