怎样把matlab程序改为vb程序
根据以上灰色关联理论分析,改进的灰色关联算法实现如下:
Private Function Gray(data) As String
Dim Dmax As Single, Dmin As Single, ed As Single, Dv As Single, p As Single
Dim X(1 To 55), XX(1 To 11) As String, Y() As Single, sum As Single, dik(1 To 5, 1 To 55) As Single, r(1 To 5, 1 To 55) As Single
Dim d0(1 To 55) As Single,...全部
根据以上灰色关联理论分析,改进的灰色关联算法实现如下:
Private Function Gray(data) As String
Dim Dmax As Single, Dmin As Single, ed As Single, Dv As Single, p As Single
Dim X(1 To 55), XX(1 To 11) As String, Y() As Single, sum As Single, dik(1 To 5, 1 To 55) As Single, r(1 To 5, 1 To 55) As Single
Dim d0(1 To 55) As Single, epsita(1 To 11) As Single, sorted() As Single
''x1--正常序列
X(1) = Array(46。
1321, 21。4828, 61。5295, 15。8202, 1。1675)
X(2) = Array(46。1321, 21。4828, 61。5295, 15。8202, 1。1675)
X(3) = Array(48。
4532, 24。7842, 62。0583, 13。1575, 0。0000)
X(4) = Array(50#, 23#, 55#, 12#, 0)
X(5) = Array(40#, 18#, 66#, 14#, 2#)
XX(1) = "正常"
'x2--受潮局部放电----------------------------------------
X(6) = Array(93。
7791, 35。3962, 24。2789, 39。4007, 0。9241)
X(7) = Array(99。4579, 56。7376, 33。3333, 9。9291, 0)
X(8) = Array(87。
2663, 51。049, 40。5594, 8。3916, 0)
X(9) = Array(85。8653, 49。5327, 31。7757, 18。6916, 0)
X(10) = Array(75。
7225, 78。7143, 19。2857, 2#, 0)
XX(2) = "受潮局部放电"
'x3--低能放电序列\
X(11) = Array(58#, 44。9, 11#, 20。6, 23。
5)
X(12) = Array(69。1286, 37。1243, 18。68, 17。9729, 26。2227)
X(13) = Array(44。9775, 20。1635, 23。1608, 4。
9046, 51。7711)
X(14) = Array(67。4387, 40。795, 7。4268, 28。2427, 23。5356)
X(15) = Array(51。2941, 48。
5507, 7。7295, 17。3913, 26。3285)
XX(3) = "低能放电"
''x4--高能放电序列----------------------------------------------
X(16) = Array(43。
7, 30。2, 3。7, 46。6, 19。4)
X(17) = Array(32。5967, 22。9508, 7。377, 57。377, 12。2951)
X(18) = Array(39。
2157, 15。4839, 4。5161, 37。7419, 42。2581)
X(19) = Array(45。7026, 16。8342, 4。5226, 35。9296, 42。7136)
X(20) = Array(20。
3852, 21。5726, 2。2177, 31。0484, 45。1613)
XX(4) = "高能放电"
''x5--低温过热 ----------------------------------------------
X(21) = Array(35。
3516, 79。1541, 12。3867, 8。4592, 0)
X(22) = Array(20。8031, 33。598, 36。0415, 28。1002, 2。2602)
X(23) = Array(10。
6054, 15。6698, 70。2422, 13。4454, 0。6426)
X(24) = Array(38。1862, 50。1931, 12。7413, 37。0656, 0)
X(25) = Array(7。
1028, 17。0221, 65。4728, 16。9416, 0。5634)
XX(5) = "低温过热"
''X6--中温过热故障序列序列----------------------------------------------
X(26) = Array(15。
3, 26。2, 21#, 52。8, 0#)
X(27) = Array(7。8105, 32。9776, 18。844, 47。0653, 1。1131)
X(28) = Array(33。
5617, 50。5157, 13。8918, 35。361, 0。2315)
X(29) = Array(3。342, 39。3508, 26。72, 33。3412, 0。588)
X(30) = Array(6。
0815, 47。6063, 17。3851, 35。0086, 0)
XX(6) = "中温过热"
''x7--高温过热故障-------------------------------------------------
X(31) = Array(11。
3, 24。6, 12。7, 59。9, 2。8)
X(32) = Array(15。8275, 21。0731, 21。8836, 56。7353, 0。308)
X(33) = Array(17。
3184, 37。8378, 12。1622, 50#, 0#)
X(34) = Array(24。0346, 25。9154, 8。7451, 64。5574, 0。7821)
X(35) = Array(14。
8352, 14。8387, 14。8387, 70。3226, 0#)
XX(7) = "高温过热"
''X8--围屏树枝状放电序列(爬电)----------------------------------------
X(36) = Array(44。
964, 14。7059, 1。9608, 34。3137, 49。0196)
X(37) = Array(62。4224, 29。7521, 4。9587, 26。4463, 38。843)
X(38) = Array(58。
5683, 30。541, 4。8866, 26。178, 38。3944)
X(39) = Array(68。3097, 40。5748, 7。0161, 27。8952, 24。5139)
X(40) = Array(49。
7696, 16。8196, 4。2813, 38。5321, 40。367)
XX(8) = "围屏树枝状放电"
''x9--匝间层间故障序列----------------------------------------
X(41) = Array(28。
8, 28。2, 3。9, 34。4, 33。4)
X(42) = Array(25。7143, 51。9231, 3。8462, 38。4615, 5。7692)
X(43) = Array(39。
1898, 18。1912, 2。3473, 27。9254, 51。5361)
X(44) = Array(24。3207, 21。6227, 2。2019, 39。873, 36。3023)
X(45) = Array(17。
1429, 30。5419, 2。4631, 31。0345, 35。9606)
XX(9) = "匝间层间故障"
''x()--分接开关故障序列----------------------------------------
X(46) = Array(13。
6, 21。6, 10。8, 58。1, 9。5)
X(47) = Array(3。9435, 23。1317, 8。3358, 68。1866, 0。3459)
X(48) = Array(16。
3397, 28。4934, 7。125, 60。7774, 3。6042)
X(49) = Array(16。6667, 20#, 8。2857, 68。8571, 2。8571)
X(50) = Array(5。
3435, 19。2876, 8。7366, 70。5645, 1。4113)
XX(10) = "分接开关故障"
''x()--铁心接地故障序列----------------------------------------
X(51) = Array(11。
2, 30。8, 11。6, 56。2, 1。4)
X(52) = Array(9。8159, 45。6195, 10。3486, 43。906, 0。1259)
X(53) = Array(23。
9973, 33。2454, 8。0915, 58。3993, 0。2639)
X(54) = Array(16。137, 28。6284, 12。0849, 58。3128, 0。9738)
X(55) = Array(15。
6285, 32。7381, 10。3945, 56。6809, 0。1866)
XX(11) = "铁心接地故障"
'--------------------------------------------------
'待诊断数据归一化,将H2/(H2+CH4+C2H6+C2H4+C2H2)*100'------CH4/(CH4+C2H6+C2H4+C2H2)*100',-----------------------------
'-----C2H4/(CH4+C2H6+C2H4+C2H2)*100',---------C2H2/(CH4+C2H6+C2H4+C2H2)*100',--------C2H6/(CH4+C2H6+C2H4+C2H2)*100',
On Error Resume Next
Y = data
'Y(1) = 14。
7
'Y(2) = 3。8
'Y(3) = 10。5
'Y(4) = 2。7
'Y(5) = 0。2
sum = 0
For i = 1 To 5
sum = sum + CSng(Y(i))
Next
If sum = 0 Then
Gray = "数据异常,无法得出结论!"
Exit Function
End If
For i = 2 To 5
Y(i) = 100 * CSng(Y(i)) / (sum - CSng(Y(1)))
Next
Y(1) = 100 * CSng(Y(1)) / sum
'-------------------------------------------------
'------计算灰色关联系数----------------------------
'计算Dmin/Dmax/Dik
Dmin = 100
Dmax = 0
sum = 0
For i = 1 To 55
For k = 1 To 5
dik(k, i) = Abs(CSng(X(i)(k)) - Y(k))
sum = sum + dik(k, i)
If dik(k, i) >= Dmax Then
Dmax = dik(k, i)
End If
If dik(k, i) mmm Then
mmm = d0(m + k)
End If
Next
epsita(i) = mmm
Next
sorted = sort(epsita)
Gray = XX(sorted(1, 2)) & " 关联度:" & Format(sorted(1, 1), "0。
0000")
End Function
该函数的参数为5种特征气体的含量数组,返回值为故障类型以及相应的关联度。
。收起