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

📄 模糊识别f1.frm

📁 用VB编写的基于模糊数学原理的模糊识别程序
💻 FRM
字号:
VERSION 5.00
Begin VB.Form frmFile 
   Appearance      =   0  'Flat
   BackColor       =   &H80000005&
   Caption         =   "识别模糊"
   ClientHeight    =   6645
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   5760
   LinkTopic       =   "Form1"
   ScaleHeight     =   6645
   ScaleWidth      =   5760
   StartUpPosition =   3  '窗口缺省
   Begin VB.Frame Frame2 
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "数据预处理"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   1095
      Left            =   240
      TabIndex        =   18
      Top             =   4200
      Width           =   1815
      Begin VB.CheckBox Check2 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "极差变换"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   20
         Top             =   600
         Value           =   1  'Checked
         Width           =   1095
      End
      Begin VB.CheckBox Check1 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "标准差变换"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   19
         Top             =   240
         Width           =   1335
      End
   End
   Begin VB.TextBox txtResultFile 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      Height          =   270
      Left            =   240
      TabIndex        =   17
      Top             =   3720
      Width           =   5295
   End
   Begin VB.Frame Frame1 
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "求贴近度方法"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H80000008&
      Height          =   2295
      Left            =   2400
      TabIndex        =   10
      Top             =   4200
      Width           =   2295
      Begin VB.OptionButton Option3 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "欧氏贴近度"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   15
         Top             =   1080
         Width           =   1335
      End
      Begin VB.OptionButton Option2 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "海明贴近度"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   14
         Top             =   720
         Width           =   1335
      End
      Begin VB.OptionButton Option1 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "格贴近度"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   13
         Top             =   360
         Width           =   1335
      End
      Begin VB.OptionButton Option5 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "算术平均最小贴近度"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   12
         Top             =   1800
         Width           =   2055
      End
      Begin VB.OptionButton Option4 
         Appearance      =   0  'Flat
         BackColor       =   &H80000005&
         Caption         =   "最大最小贴近度"
         ForeColor       =   &H80000008&
         Height          =   375
         Left            =   120
         TabIndex        =   11
         Top             =   1440
         Value           =   -1  'True
         Width           =   1935
      End
   End
   Begin VB.TextBox txtFile 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      Height          =   270
      Left            =   240
      TabIndex        =   9
      Top             =   3000
      Width           =   5295
   End
   Begin VB.CommandButton cmdExit 
      Caption         =   "结束"
      Height          =   375
      Left            =   4920
      TabIndex        =   7
      ToolTipText     =   "结束程序运行"
      Top             =   6120
      Width           =   615
   End
   Begin VB.CommandButton cmdOK 
      Caption         =   "确定"
      Height          =   375
      Left            =   4920
      TabIndex        =   6
      ToolTipText     =   "选择好文件并给出行数和列数后单击"
      Top             =   5640
      Width           =   615
   End
   Begin VB.FileListBox File1 
      Appearance      =   0  'Flat
      Height          =   1470
      Left            =   240
      TabIndex        =   2
      Top             =   1080
      Width           =   2655
   End
   Begin VB.DirListBox Dir1 
      Appearance      =   0  'Flat
      Height          =   2190
      Left            =   3120
      TabIndex        =   1
      Top             =   360
      Width           =   2415
   End
   Begin VB.DriveListBox Drive1 
      Appearance      =   0  'Flat
      Height          =   300
      Left            =   240
      TabIndex        =   0
      Top             =   360
      Width           =   2655
   End
   Begin VB.Label lblR 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "模糊识别结果文件全名"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   1080
      TabIndex        =   16
      Top             =   3480
      Width           =   3735
   End
   Begin VB.Label lblFile 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "数据文件全名"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   1440
      TabIndex        =   8
      Top             =   2760
      Width           =   3015
   End
   Begin VB.Label lblF 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "选择数据文件"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   240
      TabIndex        =   5
      Top             =   840
      Width           =   2655
   End
   Begin VB.Label lblC 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "选择目录"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   3120
      TabIndex        =   4
      Top             =   120
      Width           =   2415
   End
   Begin VB.Label lblD 
      Alignment       =   2  'Center
      Appearance      =   0  'Flat
      BackColor       =   &H80000005&
      Caption         =   "选择驱动器"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   240
      TabIndex        =   3
      Top             =   120
      Width           =   2655
   End
End
Attribute VB_Name = "frmFile"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'模糊识别
'文件窗体模块
Option Explicit
Dim intI As Integer, intJ As Integer, intK As Integer
Dim intA As Integer
Dim intFileNumber As Integer                        '文件号
Dim strData As String                               '临时保存数据

Private Sub Form_Load()
    File1.Pattern = "*.dat"                         '只显示数据文件
'求贴近度方法的缺省设置为最大最小法
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(4) = 1
End Sub

'选择目录
Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub

'选择驱动器
Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

'确定数据文件
Private Sub File1_Click()
    txtFile.Text = Dir1.Path & "\" & File1.FileName
    txtResultFile.Text = Dir1.Path & "\" & "识别_" & File1.FileName
    strResultFile = txtResultFile.Text
End Sub

'选择格贴近度
Private Sub Option1_Click()
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(1) = 1
End Sub

'选择海明贴近度
Private Sub Option2_Click()
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(2) = 1
End Sub

'选择欧氏贴近度
Private Sub Option3_Click()
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(3) = 1
End Sub

'选择最大最小贴近度
Private Sub Option4_Click()
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(4) = 1
End Sub

'选择算术平均最小贴近度
Private Sub Option5_Click()
    For intI = 1 To 5
        Opt(intI) = 0
    Next intI
    Opt(5) = 1
End Sub

'确定,给出文件名和行数、列数后单击
Private Sub cmdOK_Click()
    Dim intR As Integer
    If txtFile.Text = "" Then
        MsgBox "必须先选定数据文件!", , "数据文件错误"
        Exit Sub
    End If
    strFileName = txtFile.Text                          '文件名
    intFileNumber = FreeFile                            '取得文件号码
    Open strFileName For Input As intFileNumber         '打开文件
    Input #intFileNumber, intRow, intCol                '读总行数、总列数
'XX是已知样本和待定样本数组;X是去除标志列的数组且做预处理
    ReDim XX(1 To intRow, 1 To intCol), X(1 To intRow, 1 To intCol - 1)
    ReDim X0(1 To intRow, 1 To intCol - 1)              '原始数据不做预处理
    For intI = 1 To intRow
        For intJ = 1 To intCol
            Input #intFileNumber, strData               '读数据
            XX(intI, intJ) = Val(strData)
            If intJ < intCol Then X(intI, intJ) = XX(intI, intJ)
            If intJ < intCol Then X0(intI, intJ) = XX(intI, intJ)
        Next intJ
    Next intI
    If Check1.Value Then Data_T1 X                      '标准差变换
    If Check2.Value Then Data_T2 X                      '极差变换
'intRow1为已知样本个数(用于形成标准模型)
'intRow2为待定样本个数(用于识别)
    intRow1 = 0: intRow2 = 0
    For intI = 1 To intRow
        If XX(intI, intCol) > 0 Then intRow1 = intRow1 + 1
        If XX(intI, intCol) = 0 Then intRow2 = intRow2 + 1
    Next intI
    If intRow1 = 0 Then
        MsgBox "将转化为标准模型的已知样本不能为0!", , "缺失已知样本错误"
        End
    End If
    If intRow2 = 0 Then
        MsgBox "将用于识别的待定样本不能为0!", , "缺失待定样本错误"
        End
    End If
'X1是已知样本数组;X2是待定样本数组
    ReDim X1(1 To intRow1, 1 To intCol - 1), X2(1 To intRow2, 1 To intCol - 1)
    ReDim X20(1 To intRow2, 1 To intCol - 1)            'X20是待定样本,不做预处理
    ReDim SC(1 To intCol - 1)                           '某一标准模型
    ReDim XC(1 To intCol - 1)                           '某一待定样本
    intRow1 = 0: intRow2 = 0
    For intI = 1 To intRow
        If XX(intI, intCol) > 0 Then
            intRow1 = intRow1 + 1
            For intJ = 1 To intCol - 1
                X1(intRow1, intJ) = X(intI, intJ)       '已知样本数组
            Next intJ
        End If
        If XX(intI, intCol) = 0 Then
            intRow2 = intRow2 + 1
            For intJ = 1 To intCol - 1
                X2(intRow2, intJ) = X(intI, intJ)       '待定样本数组
                X20(intRow2, intJ) = X0(intI, intJ)     '待定样本数组
            Next intJ
        End If
    Next intI
    intS = 0                                            'intS为标准模型的个数
    For intI = 1 To intRow
        If intS < XX(intI, intCol) Then intS = XX(intI, intCol)
    Next intI
'检查标准模型编号
'标准模型编号必须是连续的整数,即1,2,3,...,如果中间出现间断则视为错误
    For intI = 1 To intS
        For intJ = 1 To intRow1
            If XX(intJ, intCol) = intI Then GoTo 100
        Next intJ
        MsgBox "标准模型的标志必须是连续的整数!", , "标准模型标志错误"
        End
100:
    Next intI
    ReDim XS(1 To intS, 1 To intCol - 1)                '标准模型数组
    ReDim XS0(1 To intS, 1 To intCol - 1)               '标准模型数组,不做预处理
    ReDim DS(1 To intS)                                 '贴近度数组
'由已知样本确定标准模型
    For intI = 1 To intS
        intA = 0
        For intJ = 1 To intRow
            If XX(intJ, intCol) = intI Then
                intA = intA + 1                         '同一模型样本计数器
                For intK = 1 To intCol - 1
                    XS(intI, intK) = XS(intI, intK) + X(intJ, intK)
                    XS0(intI, intK) = XS0(intI, intK) + X0(intJ, intK)
                Next intK
            End If
        Next intJ
'intA为某一标准模型的样本个数
'对属于同一个标准模型的不同样本的对应指标做算术平均
        For intK = 1 To intCol - 1
            XS(intI, intK) = XS(intI, intK) / intA
            XS0(intI, intK) = XS0(intI, intK) / intA
        Next intK
    Next intI
    Close
    frmResu.Visible = True
End Sub

'结束运行
Private Sub cmdExit_Click()
    Unload Me
    End
End Sub

⌨️ 快捷键说明

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