将lines中的指标画趋势图, 拥有指标分页显示, 遍历测点, 设备, 支持波形查看, 波形打标签. 可选择2种显示方式, 趋势图 vs 散点图矩阵
Usage:
TrendViewer(lines) %绘制多趋势
TrendViewer(matrix) %将matrix转换成lines, 再显示. matrix is mxn double
TrendViewer(lines, caseagg=caseagg) %(待实现)绘制多趋势, 并加入标签
输入:
lines : 单台或多台设备的指标数据集 (class type: lnfun.Line)
输出:
obj: 包含图窗信息的类实例
截图:
主函数TrendViewer GUI使用说明:
鼠标shift+左击: 显示波形分析工具
鼠标左击: 高亮波形
K: 发送高亮波形打标签
P: 上一页波形快照
N: 下一页波形快照
D: 删除框选数据
PagnDn: 下一台设备的数据
PagnUp: 上一台设备的数据
End: 下一页指标
Home: 上一页指标
Z: 切换缩略图尺寸
S: 切换缩略图类型
案例筛选功能
TrendViewer(L,'caseagg',caseagg)
输入参数包含caseagg时, 可以开启案例筛选功能.
案例筛选器,可以对字段排序. 点击某一行, 会跳转到相应案例的指标显示.
通过预先修改caseagg.caseinfos的内容, 可以选择要展示哪些字段, 添加哪些展示信息.
自定义报警内容显示
TrendViewer(L,caseagg,@custom_trend_plot_function);
其中custom_trend_plot_function是用户自定义的画图函数, 输入参数为lnfun.Line
%此为一个plot_function的例子
function alm_plot_fcn(oneline)
d=oneline.va.measvalue;
d(d<0)=nan;
tn=oneline.va.measdate;
sb_almlevel=oneline.va.isSbAlarm;
%在调用TrendView(lines,caseagg,@custom_trend_plot_function)前要在line.va中添加画图需要的字段值.
isfealarm=oneline.va.isfealarm;
thd=oneline.va.fethd;
y_max=max([d;thd]);
plot(tn,d,'b.-');
hold on;
plot(tn(~isnat(tn) & thd>0 & thd<20000),thd(~isnat(tn) & thd>0 & thd<20000),'r.-');
plot(tn(sb_almlevel==1),0.85*y_max*ones(sum(sb_almlevel==1),1),'go');
plot(tn(sb_almlevel==2),0.9*y_max*ones(sum(sb_almlevel==2),1),'mo');
plot(tn(sb_almlevel==3),0.95*y_max*ones(sum(sb_almlevel==3),1),'ko');
plot(tn(sb_almlevel==4),y_max*ones(sum(sb_almlevel==4),1),'ro');
plot(tn(isfealarm>0),0.75*y_max*ones(sum(isfealarm>0),1),'gs')
end
在调用TrendView(lines,caseagg,@custom_trend_plot_function)前要在line.va中添加画图需要的字段值.
趋势图展示:
设备结构信息展示, 多测点同步GUI
更新说明:
2021-0-01
批量选数据点, 显示缩略图的功能, 移到了右键菜单里.
工具栏增加了单波形打标签功能
首次打开标签工具后, 按shift+左键选择波形后, 波形信息会自动同步到 fe_play_guid_LabelView 标签工具中, 供打标签
增加了自定义的shift click callback
按住shift键+点击鼠标左键, 默认的callback是调用WaveView(wv). 可以通过给shiftclick_callback参数赋值自定义的函数句柄, 调用自己的指标计算和展示函数.
例如
TrendViewer(lines,shiftclick_callback=@(wv) detect_gearmesh(wv,0));
callback函数的定义
function [rst]=detect_gearmesh(wv,doplot)
wv.read_input_signals({'wave','adrpm'});
d = wv.wave.data.d;
t = wv.wave.data.t;
f = wv.wave.data.f;
Y = wv.wave.data.Y;
fs = wv.wave.data.fs;
ad = wv.adrpm.ad;
rpm = wv.adrpm.rpm;
以下略...
callback函数的其中一个输入必须是wv [class=sigfun.WaveData]. 如果有其他输入参数, 则需要自定义一个匿名函数传入
TrendViewer(lines,shiftclick_callback=@(wv) detect_gearmesh(wv,0));
如果没有其他输入参数
TrendViewer(lines,shiftclick_callback=@detect_gearmesh);
新增指标筛选框
fename=rms,feid=[1,2,3],pid=1