echarts3.0 markline 最大值 最小值 均值 方差 标准差 包络 正态分布

本文介绍了一种使用ECharts实现统计指标(如最大值、最小值等)可视化的方案。通过对一系列数据进行处理,计算得到最大值、最小值、均值、标准差等,并将这些指标以线的方式叠加在柱状图上,便于直观地比较各项指标。

if (pie == "最大值" || pie == "最小值" || pie == "均值" || pie == "标准差" || pie == "方差" || pie == "包络范围" || pie == "正态分布") {
        var max = option1.series[0].data[0];
        var min = option1.series[0].data[0];
        var avage;
        var len = option1.series[0].data.length;
        var swait = 0;
        var sumtwo=0;
        for (var j = 0; j < len; j++) {
            swait += option1.series[0].data[j];
          
            if (max < option1.series[0].data[j]) {
                max = option1.series[0].data[j];
            }

            if (min> option1.series[0].data[j]) {
                min = option1.series[0].data[j];
            }
        }
        avage = swait / len;
        for (var k = 0; k < len; k++) {
            sumtwo += (option1.series[0].data[k]-avage)*(option1.series[0].data[k]-avage);
        }
        var sumtwo = sumtwo / len;
        var mm = Math.sqrt(sumtwo);
        mm = Math.round(mm);
        var pp = $('input:checkbox:checked');
        for (i = 0; i < pp.length; i++) {
            Maxx.push(pp[i].defaultValue);
            if (pp[i].defaultValue == "最大值") {
                smdata +=
                   // "[{\"name\":\"最大值\",\"x\":90,\"y\":"+max+"},{\"x\":650,\"y\":"+max+"}],"
                    "[{\"name\":\"最大值\",\"coord\":[0," + max + "]},{\"coord\":[" + (len - 0.8) + "," + max + "]}],"
            }
            if (pp[i].defaultValue == "方差") {
                smdata +=
                    "[{\"name\":\"方差\",\"x\":90,\"y\":150},{\"x\":650,\"y\":150}],"
            }
            if (pp[i].defaultValue == "均值") {
                smdata +=
                    //"[{\"name\":\"均值\",\"x\":90,\"y:" + avage + "},{\"x\":650,\"y:" + avage+"}],"
                    "[{\"name\":\"均值\",\"coord\":[0," + avage + "]},{\"coord\":[" + (len - 0.8) + "," + avage + "]}],"
            }
            if (pp[i].defaultValue == "最小值") {
                smdata +=
                    "[{\"name\":\"最小值\",\"coord\":[0,"+min+"]},{\"coord\":["+(len-0.8)+","+min+"]}],"
          //      smdata += "[{\"name\":\"最小值\",\"x\":90,\"y\":"+min+"},{\"x\":650,\"y\":"+min+"}],"
            }
            if (pp[i].defaultValue == "标准差") {
                smdata +=
                    //"[{\"name\":\"标准差\",\"x\":90,\"y\":" + mm + "},{\"x\":650,\"y\":" + mm + "}],"
                    "[{\"name\":\"标准差\",\"coord\":[0," + mm + "]},{\"coord\":[" + (len - 0.8) + "," + mm + "]}],"
            }
            if (pp[i].defaultValue == "正态分布") {
                //smdata+= "[{\"name\":\"\",\"x\":90,\"y\":50},{\"x\":650,\"y\":50}],"    
                Isradio = true;
            }
            if (pp[i].defaultValue == "包络范围") {
                smdata += "[{\"name\":\"包络范围\",\"x\":90,\"y\":300},{\"x\":650,\"y\":300}],[{\"name\":\"包络范围\",\"x\":90,\"y\":50},{\"x\":650,\"y\":50}],"

            }

            //alert(pp[i].defaultValue);
        }
        smdata = '[' + smdata.substring(0, smdata.length - 1) + ']';
        var jsondata = JSON.parse(smdata);

        smark = {
            data:
                jsondata
        };

        //var obj = smdata.parseJSON();

        series1 = [
            {
                name: '加电故障',
                type: 'bar',
                data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 35.6, 62.2, 32.6, 20.0, 6.4, 3.3],
                markLine: {
                    data: [
                        [
                            {
                                name: '方差',
                                x: 90,
                                y: 350
                            },
                            {
                                x: 650,
                                y: 350
                            }
                        ]
                        , [
                            {
                                name: '平均值',
                                x: 90,
                                y: 400
                            },
                            {
                                x: 650,
                                y: 400
                            }
                        ]
                        ,
                        [
                            {
                                name: '最小值',
                                x: 90,
                                y: 530
                            },
                            {
                                x: 650,
                                y: 530
                            }
                        ]
                        ,
                        [
                            {
                                name: '标准差',
                                x: 90,
                                y: 450
                            },
                            {
                                x: 650,
                                y: 450
                            }
                        ]
                    ]
                }

            },
            {
                name: '给水故障',
                type: 'bar',
                data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3]
            },
            {
                name: '排水故障',
                type: 'bar',
                data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
            }
            ,
            {
                name: '下电故障',
                type: 'bar',
                data: [2.0, 21.2, 31.13, 41.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
            }
            ,
            {
                name: '运行故障',
                type: 'bar',
                data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 10.3, 3.4, 23.0, 6.5, 12.0, 6.2]
            }
        ]
        //option1.series.markLine=series1;
        option1.series[0].markLine = smark;
        alert(smdata);

        //myChart.clear();
        var IsZt = false;
        for (var i = 0; i < option1.series.length; i++) {
            if (option1.series[i].name == '正态分布') {
                IsZt = true;
                if (Isradio == false) {
                    var item1 = [
                        {
                            name: '加电故障',
                            type: 'bar',
                            data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 35.6, 62.2, 32.6, 20.0, 6.4, 3.3],
                            markLine: {

                            }

                        },
                        {
                            name: '给水故障',
                            type: 'bar',
                            data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3]
                        },
                        {
                            name: '排水故障',
                            type: 'bar',
                            data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
                        }
                        ,
                        {
                            name: '下电故障',
                            type: 'bar',
                            data: [2.0, 21.2, 31.13, 41.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]
                        }
                        ,
                        {
                            name: '运行故障',
                            type: 'bar',
                            data: [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 10.3, 3.4, 23.0, 6.5, 12.0, 6.2]
                        }
                    ];
                    myChart.clear();

                    option1.series = item1;
                    option1.series[0].markLine = smark;
                }

            }
        }
        if (Isradio == true) {

            if (IsZt == false) {
                var item = {
                    name: '正态分布',
                    type: 'line',
                    data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3],
                    smooth: true,
                    symbol: 'none',
                };
                option1.series.push(item);
            }

        }
        alert(smark);
        myChart.setOption(option1);
        Isradio = false;
        //alert    (option1.toolbox.series.markLine);
        //option1
    }

请按以下内容进行修改:2.2 问题 1 模型建立 数据分析与特征提取是故障诊断模型的基础。在这一阶段,我们通过时域、频域以及时频 域的特征来对轴承故障进行诊断。轴承故障信号通常表现出周期性冲击特征,这些特征在时域、 频域以及时频域上都有显著的表现。故障诊断模型需要从这些信号中提取有效的特征,以帮助 分类模型学习到不同故障模式。下面我们详细描述每一类特征的提取过程及其在故障诊断中的 作用。 2.2.1 时域特征提取 时域特征是最基本的特征,用于反映信号的总体形态。常见的时域特征包括均值方差、峰 度、偏度等,它们能够帮助我们描述信号的集中趋势、离散程度以及形态特征。具体来说,我们 计算以下几个时域统计特征: • 均值(Mean, µ):表示信号的平均水平,用来衡量信号的中心位置。 µ = N 1 N ∑ i=1 xi 其中,xi 为第 i 个采样点,N 为采样点的总数。 • 方差(Variance, σ 2):表示信号的波动程度,用来衡量信号的离散程度。 σ 2 = N 1 N ∑ i=1 (xi − µ) 2 • 峰度(Kurtosis):表示信号的尖锐程度,能够反映出信号是否具有突发的冲击。 • 偏度(Skewness):反映信号的对称性,若偏度为正,表示信号有较多的正偏。 这些时域特征能够反映出信号的基本形态特征,尤其是信号的集中趋势与离散程度。 2.2.2 频域特征提取 频域特征能够反映出信号的频率成分,尤其是当信号包含周期性成分或谐波成分时,频域 特征非常有效。通过傅里叶变换,我们将时域信号转换为频域信号,得到频谱。在频域中,常见 的特征包括频谱均值、频谱方差、谱重心等。 首先,我们通过傅里叶变换将信号从时域转换为频域: X(f) = N−1 ∑ n=0 xne −j2πfn/N 其中,X(f) 是频域上的复数谱,xn 是时域信号,f 是频率。 接下来,计算以下频域特征: 3 • 频谱均值(Spectral Mean):表示频谱的平均幅值,反映了信号的总体频率分布。 • 频谱方差(Spectral Variance):表示频谱的离散程度,能够反映信号的频率波动性。 • 频谱重心(Spectral Centroid):衡量信号频率分布的中心位置,常用于描述信号的频率特 性。 • 频谱熵(Spectral Entropy):描述频谱的复杂度,频谱熵越大,表示信号的频率成分越复 杂。 这些频域特征能帮助我们从频率角度分析轴承故障信号,尤其是当故障信号表现为特定频 率的振动时,频域特征尤为有效。 2.2.3 时频域特征提取 时频域分析方法,如短时傅里叶变换(STFT)和小波变换,可以有效地分析信号在时间和 频率上的变化,捕捉信号的局部特征。通过时频分析,我们可以更精确地捕捉到信号的突变和 局部故障信息。 小波变换公式如下: Wx(a, b) = 1 √ a ∫ ∞ −∞ x(t)ψ ( t − a b ) dt 其中,Wx(a, b) 为信号 x(t) 的尺度平移小波变换,ψ 为母小波,a 和 b 分别为尺度和平移参数。 短时傅里叶变换(STFT)方法则将信号划分为多个时间段,通过对每个时间段进行傅里叶 变换,得到时频图: ST F T{x(t)} = ∫ ∞ −∞ x(t) · w(t − τ ) · e −j2πf tdt 其中,w(t − τ ) 是窗口函数,x(t) 是信号,f 是频率,τ 是时间。 通过时频分析,我们能够获得信号在不同时间段和频率上的能量分布,进而提取时频特征, 例如: • 短时能量:反映信号在某一时间窗口内的能量分布。 • 短时频率:描述信号在某一时间窗口内的瞬时频率。 时频特征对于复杂的信号分析至关重要,尤其是在信号的故障模式随着时间和频率变化时。 2.2.4 包络分析特征提取 包络分析是对信号进行希尔伯特变换得到包络信号,从而提取出低频的故障信息。包络信 号可以帮助我们识别出低频故障频率,尤其是在轴承故障的情况下,包络分析能有效地捕捉到 故障产生的冲击特征。 包络信号通过以下方式计算: Envelope(t) = |H{x(t)}| 其中,H{x(t)} 表示信号 x(t) 的希尔伯特变换。 通过包络分析,我们能够提取以下特征: 4 • 包络最大值最小值:描述包络信号的幅值范围。 • 包络均值标准差:反映包络信号的基本统计特性。 • 包络的峰度和偏度:描述包络信号的形态特征。 • 包络的频谱:通过傅里叶变换提取包络的频率成分。 包络分析对于诊断周期性冲击特征尤其重要,这些特征通常与轴承的局部故障相关。 2.2.5 特征选择与整合 特征提取完成后,我们将所有提取的特征整合成一个完整的特征集。为了确保模型的高效 性和准确性,我们还需要对这些特征进行选择。特征选择的目的是去除冗余特征,保留对故障 分类最有帮助的特征。这可以通过以下几种方法实现: • 基于相关性分析:剔除与其他特征高度相关的冗余特征。 • 基于模型的特征选择:使用如 LASSO 回归等模型来选择重要的特征。 • 主成分分析(PCA):通过降维方法减少特征维度,提高计算效率。 最终,我们得到一个包含时域、频域、时频域和包络分析特征的特征集,为后续的故障分类 模型提供了强有力的输入。 2.3 问题 1 模型求解 在本节中,我们对轴承故障信号的前 14 行数据进行了分析。这些数据包含了从不同轴承信 号中提取的多种特征,涵盖了时域、频域、时频域以及包络分析等多个维度。以下是特征数据 的具体分析: 2.3.1 数据表格概览 以下是前 14 行数据的部分示例: Mean Std Variance RMS Max Min Peak-to-Peak 0.0001 0.1378 0.0190 0.1378 0.5795 −0.6196 1.1991 −0.0001 0.1389 0.0193 0.1389 0.6358 −0.6635 1.29930.0001 0.1475 0.0218 0.1475 0.60000.5594 1.1595 −0.0001 0.1541 0.0237 0.1541 0.66730.7248 1.3921 −0.0001 0.1475 0.0218 0.1475 2.2735 −1.9682 4.2417 −0.0001 0.1475 0.0218 0.1475 1.8345 −1.3903 3.2248 0.0001 0.1385 0.0192 0.1385 1.6382 −1.6392 3.2775 0.0001 0.1385 0.0192 0.1385 1.6382 −1.6392 3.2775 0.0001 0.1384 0.0192 0.1384 1.6382 −1.6392 3.2775 5 2.3.2 特征分析 这些特征值包括了时域、频域以及包络分析的多个统计指标,能够帮助我们从不同的角度 分析信号的特性。 1. 均值(Mean):表示信号的平均值。在此数据中,均值变化范围较小,大部分信号均值 接近零。对比不同的信号样本,均值的变化可能是由噪声或某些外部扰动引起的。 2. 标准差(Std):表示信号的波动性。标准差越大,信号的波动越大。在数据中,大部分 标准差的值在 0.130.15 之间,说明这些信号的波动幅度较为一致。标准差的值较高可能指示 信号中存在较大的变动,或与故障相关的波动。 3. 方差(Variance):与标准差相似,方差表示信号数据的离散程度。在数据中,方差值普 遍较小,表明信号整体较为稳定,波动不大。 4. 均方根(RMS):均方根值代表信号能量的大小。从数据中可以看出,RMS 值也大多小 于 0.2,且在多个样本间波动较大,表明信号的能量水平可能有所不同。 5. 最大值(Max)与最小值(Min):最大值最小值表示信号的极值范围。例如,第一个 信号的最大值0.5795,最小值为-0.6196,意味着该信号的振幅变化较大。对比其它信号,我 们看到一些信号的极值在较大的范围内,可能代表信号中的突变或故障模式。 6. 峰峰值(Peak-to-Peak):峰峰值反映了信号的整体振幅范围,值越大,表明信号中包 含更大的变化。第一行数据的峰峰值为 1.1991,说明该信号的振幅变化较大,可能与冲击性故 障相关。 2.3.3 特征的物理意义 - 时域特征(如均值方差标准差、RMS 等):这些特征描述了信号的基本统计特性。时 域特征的变化通常与信号的衰减、振幅变化以及噪声等因素有关。轴承故障往往通过时域信号 的非平稳性、波动性和突发性表现出来,因此时域特征对于诊断故障类型尤为重要。 - 频域特征(如最大值最小值等):频域特征能够揭示信号的频率组成。信号中的频率分 量有助于判断故障类型,特定频率范围内的能量积聚往往与某些故障模式(如滚动体、外圈故 障等)相关。 - 包络分析特征:包络分析能够提取信号的低频成分
09-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值