⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模糊识别m3.bas

📁 用VB编写的基于模糊数学原理的模糊识别程序
💻 BAS
字号:
Attribute VB_Name = "modMethod"
'模糊识别
'贴近度方法模块
Option Explicit
'格贴近度
'A(1 To M):待定样本,M为元素数或指标数
'B(1 To M):标准模型,M为元素数或指标数
'C为贴近度
Public Sub MM1(A() As Double, B() As Double, C As Double)
    Dim M As Integer, I As Integer
    Dim dM1 As Double, dM2 As Double
    Dim dC1 As Double, dC2 As Double
    M = UBound(A, 1)          'M:元素数或指标数
    dM1 = 0: dM2 = 1
    For I = 1 To M
        If A(I) < B(I) Then dC1 = A(I) Else dC1 = B(I)
        If A(I) > B(I) Then dC2 = A(I) Else dC2 = B(I)
        If dC1 > dM1 Then dM1 = dC1
        If dC2 < dM2 Then dM2 = dC2
    Next I
    C = (dM1 + (1 - dM2)) / 2
End Sub

'海明贴近度
'A(1 To M):待定样本,M为元素数或指标数
'B(1 To M):标准模型,M为元素数或指标数
'C为贴近度
Public Sub MM2(A() As Double, B() As Double, C As Double)
    Dim M As Integer, I As Integer
    Dim D As Double
    M = UBound(A, 1)          'M:元素数或指标数
    D = 0
    For I = 1 To M
        D = D + Abs(A(I) - B(I))
    Next I
    C = 1 - D / M
End Sub
    
'欧氏贴近度
'A(1 To M):待定样本,M为元素数或指标数
'B(1 To M):标准模型,M为元素数或指标数
'C为贴近度
Public Sub MM3(A() As Double, B() As Double, C As Double)
    Dim M As Integer, I As Integer
    Dim D As Double
    M = UBound(A, 1)          'M:元素数或指标数
    D = 0
    For I = 1 To M
        D = D + (A(I) - B(I)) ^ 2
    Next I
    C = 1 - Sqr(D / M)
End Sub

'最大最小法
'A(1 To M):待定样本,M为元素数或指标数
'B(1 To M):标准模型,M为元素数或指标数
'C为贴近度
Public Sub MM4(A() As Double, B() As Double, C As Double)
    Dim M As Integer, I As Integer
    Dim dMin As Double, dMax As Double
    Dim dC1 As Double, dC2 As Double
    M = UBound(A, 1)          'M:元素数或指标数
    For I = 1 To M
        If A(I) < B(I) Then dC1 = A(I) Else dC1 = B(I)
        If A(I) > B(I) Then dC2 = A(I) Else dC2 = B(I)
        dMin = dMin + dC1
        dMax = dMax + dC2
    Next I
    C = dMin / dMax
End Sub

'算术平均值最小法
'A(1 To M):待定样本,M为元素数或指标数
'B(1 To M):标准模型,M为元素数或指标数
'C为贴近度
Public Sub MM5(A() As Double, B() As Double, C As Double)
    Dim M As Integer, I As Integer
    Dim dMin As Double
    Dim dC1 As Double, dC2 As Double, dC As Double
    M = UBound(A, 1)          'M:元素数或指标数
    For I = 1 To M
        If A(I) < B(I) Then dC1 = A(I) Else dC1 = B(I)
        dMin = dMin + dC1
        dC2 = A(I) + B(I)
        dC = dC + dC2
    Next I
    C = 2 * dMin / dC
End Sub
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -