JRobin Rrd画图出现值NaN的情况

shanshan0211_99 2011-12-13 10:07:43
我在使用JRobin Rrd绘制流量监控图的时候,发现一个问题,Jrobin存值的时候,如果在某一时刻碰巧没有值,就会存入Not a number,导致图片上的数据显示NaN。以下是我的代码,我能确定数据是没问题的。请问哪位知道Jrobin这种情况的解决方法,多谢了。
RrdDef rrdDef = new RrdDef(rrdFile, start - 1, perTime);//perTime=300 rrdDef.addDatasource("value1", "GAUGE", 2*perTime, Double.NaN, Double.NaN);//定义数据源,可以定义多个,value1代表流入值
rrdDef.addDatasource("value2", "GAUGE", 2*perTime, Double.NaN, Double.NaN);//value2代表流出值
rrdDef.addArchive("AVERAGE", 0.5, 1, listResult.size());//listResult--数据源 RrdDb rrdDb = new RrdDb(rrdDef);//根据数据定义创建数据文件
for(int j = 0; j < listResult.size(); j++) {
HashMap hashMap = (HashMap)listResult.get(j);
BigDecimal portInTraffic = (BigDecimal)hashMap.get("FLOW_IN");
BigDecimal portOutTraffic = (BigDecimal)hashMap.get("FLOW_OUT");
String dateString3 = (String)hashMap.get("GATHER_DATE");
SimpleDateFormat simDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simDateFormat.parse(dateString3);
long time0 = (long)date.getTime();
time0 = time0/1000;
//往流量图上加数据--开始
Sample sample = rrdDb.createSample(time0);//一笔数据一个点
if(portInTraffic != null) {
sample.setValue("value1", portInTraffic.doubleValue());
}
if(portOutTraffic != null) {
sample.setValue("value2", portOutTraffic.doubleValue());
}
try {
sample.update();
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//往流量图上加数据--结束
}
String pngFile = "";
RrdGraphDef gDef = null;
//生成最近一月的图形---图片格式为:端口编码+"-"+周期类型(Monthly)
pngFile = uploadPath + "port" + File.separator + userName
+ File.separator + circuitId+"-3-small.month.png";
gDef = new RrdGraphDef();
gDef.setFilename(pngFile);
gDef.setWidth(250);
gDef.setHeight(150);
gDef.setImageFormat("png");
gDef.setTimeSpan(end - 30 * 86400, end);
gDef.setTitle(circuitName + "最近一月流量图");
gDef.setVerticalLabel("字节每秒");

gDef.datasource("demo", rrdFile, "value1", "AVERAGE");
gDef.area("demo", Color.GREEN, "流入");
// gDef.gprint("demo", "MIN", "最小:%5.1lfb/s");
gDef.gprint("demo", "MIN", "最小:%.2f %sB/s");
gDef.gprint("demo", "AVERAGE", "平均:%.2f %sB/s");
gDef.gprint("demo", "MAX", "最大:%.2f %sB/s\\l");

gDef.datasource("demo2", rrdFile, "value2", "AVERAGE");
gDef.line("demo2", Color.BLUE, "流出");
gDef.gprint("demo2", "MIN", "最小:%.2f %sB/s");
gDef.gprint("demo2", "AVERAGE", "平均:%.2f %sB/s");
gDef.gprint("demo2", "MAX", "最大:%.2f %sB/s");

gDef.setSmallFont(new Font("Monospaced", Font.PLAIN, 7));
gDef.setLargeFont(new Font("SansSerif", Font.BOLD, 9));
new RrdGraph(gDef);
...全文
188 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文档围绕基于MATLAB/Simulink平台的直流无刷电机速度控制系统展开,重点介绍利用Simulink搭建电机控制模型,实现直流无刷电机的速度开环控制仿真。文档详细阐述了系统建模、关键模块设计与参数配置过程,帮助读者深入理解电机控制的基本原理与仿真流程。同时,文档还列举了涵盖电力电子、新能源系统、路径规划、智能优化算法等多个领域的丰富仿真案例,充分展示了MATLAB/Simulink在多学科交叉科研仿真中的强大功能与广泛应用前景。; 适合人群:具备一定自动控制理论基础和MATLAB/Simulink使用经验的高校学生、科研人员及工程技术人员,特别适用于从事电机控制、电力电子、新能源系统、智能优化等方向的研究者。; 使用场景及目标:①学习直流无刷电机的工作原理及其速度开环控制方法;②掌握使用Simulink进行电机控制系统建模与仿真的核心技能;③为后续开展更高级的闭环控制、矢量控制或结合智能优化算法的电机控制研究奠定坚实的技术基础并提供实用的参考实例。; 阅读建议:建议读者结合文档提供的仿真模型与代码资源,亲自动手实践Simulink建模全过程,逐步理解各功能模块的作用与参数整定方法,并充分利用网盘中的配套资料进行复现与深入学习,从而有效提升科研仿真与工程实践能力。
内容概要:本文系统阐述了基于二维离散时间卡尔曼滤波器在二维平面内对运动目标进行轨迹跟踪的技术方案,重点分析了过程噪声与测量噪声在不同强度下对滤波性能的影响。通过建立目标状态空间模型,设计完整的预测与更新算法流程,实现了对受噪声干扰的观测数据进行有效估计与轨迹平滑,充分展现了卡尔曼滤波在动态系统状态估计中的鲁棒性与实用性,并提供了完整的Matlab代码实现,便于理论验证与参数调试。; 适合人群:具备信号处理、控制理论或状态估计基础知识的研究生、科研人员,以及从事雷达系统、导航定位、机器人感知、自动驾驶等领域的工程技术人员。; 使用场景及目标:① 掌握卡尔曼滤波的核心原理及其在目标跟踪中的建模与实现方法;② 分析不同噪声协方差参数对滤波收敛性、估计精度和平滑效果的影响;③ 为深入研究非线性滤波算法(如EKF、UKF)或多传感器融合技术奠定理论与实践基础。; 阅读建议:建议读者结合所提供的Matlab代码进行仿真实验,通过调整过程噪声和观测噪声的强度,观察滤波轨迹与真实轨迹的偏差变化,深入理解协方差矩阵的演化机制,并尝试将该方法拓展至三维空间或多目标跟踪场景,以增强实际应用能力。

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧