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

📄 form02.frm

📁 本文档包括了对软件中用到的多元统计分析中判别分析与聚类分析的主要方法(包括距离判别分析,费希尔判别分析,贝叶斯判别分析,逐步判别分析及聚类分析)原理及在本软件中使用的基本方法与设计流程图进行了详尽的阐
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Object = "{8AE029D0-08E3-11D1-BAA2-444553540000}#3.0#0"; "VSFLEX3.OCX"
Begin VB.Form Form02 
   AutoRedraw      =   -1  'True
   BackColor       =   &H80000013&
   Caption         =   "距离判别分析"
   ClientHeight    =   6255
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   10485
   FillColor       =   &H80000013&
   ForeColor       =   &H80000013&
   Icon            =   "Form02.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   6255
   ScaleMode       =   0  'User
   ScaleWidth      =   5664.506
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command2 
      Caption         =   "分析"
      Height          =   375
      Left            =   1680
      TabIndex        =   14
      Top             =   3240
      Width           =   1095
   End
   Begin VB.TextBox Text4 
      Height          =   375
      Left            =   1680
      TabIndex        =   3
      Top             =   1320
      Width           =   855
   End
   Begin VB.CommandButton Command1 
      Caption         =   "重置"
      Height          =   375
      Left            =   240
      TabIndex        =   11
      Top             =   3240
      Width           =   1095
   End
   Begin VB.Frame Frame2 
      BackColor       =   &H80000013&
      Caption         =   "结果显示"
      Height          =   2295
      Left            =   840
      TabIndex        =   10
      Top             =   3840
      Width           =   9135
      Begin VB.TextBox Text5 
         BackColor       =   &H80000013&
         Height          =   1965
         Left            =   240
         MultiLine       =   -1  'True
         ScrollBars      =   3  'Both
         TabIndex        =   13
         Top             =   240
         Width           =   8655
      End
   End
   Begin VB.TextBox Text3 
      Height          =   1815
      Left            =   3480
      MultiLine       =   -1  'True
      ScrollBars      =   3  'Both
      TabIndex        =   9
      Top             =   2040
      Width           =   6615
   End
   Begin VB.Frame Frame1 
      BackColor       =   &H80000013&
      Caption         =   "数据输入方式"
      Height          =   975
      Left            =   240
      TabIndex        =   5
      Top             =   1920
      Width           =   2295
      Begin VB.OptionButton Option2 
         BackColor       =   &H80000013&
         Caption         =   "使用文本框"
         Height          =   255
         Left            =   480
         TabIndex        =   7
         Top             =   600
         Width           =   1455
      End
      Begin VB.OptionButton Option1 
         BackColor       =   &H80000013&
         Caption         =   "使用表格"
         Height          =   255
         Left            =   480
         TabIndex        =   6
         Top             =   240
         Value           =   -1  'True
         Width           =   1335
      End
   End
   Begin VB.TextBox Text2 
      Height          =   375
      Left            =   1680
      TabIndex        =   2
      Top             =   720
      Width           =   855
   End
   Begin VB.TextBox Text1 
      Height          =   375
      Left            =   1680
      TabIndex        =   1
      Top             =   120
      Width           =   855
   End
   Begin vsFlexLib.vsFlexArray vsFlexArray1 
      Height          =   1575
      Left            =   3480
      TabIndex        =   8
      Top             =   360
      Width           =   6615
      _Version        =   196608
      _ExtentX        =   11668
      _ExtentY        =   2778
      _StockProps     =   228
      Appearance      =   1
      ConvInfo        =   1413783674
      ScrollTrack     =   -1  'True
      Editable        =   -1  'True
   End
   Begin VB.Label Label3 
      BackColor       =   &H80000013&
      Caption         =   "类别总数"
      Height          =   255
      Left            =   360
      TabIndex        =   12
      Top             =   1320
      Width           =   855
   End
   Begin VB.Label Label2 
      BackColor       =   &H80000013&
      Caption         =   "指标总数"
      Height          =   255
      Left            =   360
      TabIndex        =   4
      Top             =   720
      Width           =   855
   End
   Begin VB.Label Label1 
      BackColor       =   &H80000013&
      Caption         =   "样品总数"
      Height          =   255
      Left            =   360
      TabIndex        =   0
      Top             =   240
      Width           =   855
   End
End
Attribute VB_Name = "Form02"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Base 1
'********************************************************************************************
'                         函数部分
'
'
'********************************************************************************************
Sub putout(A() As Double, m%, n%) 'm为矩阵的行,n为矩阵的列
'****************************************************************************************
'  功能  :  输出矩阵
'  参数  :  a为待输出的矩阵;m为a矩阵的行;n为a矩阵的列
'  返回值:  无返回值
'****************************************************************************************
For i = 1 To m
       For j = 1 To n
       Print Tab(j * 20); A(i, j); 'Format(a(i, j), "0.0000");
      Next j
      Print
Next i
End Sub
Sub pingjun(A() As Double, m%, qd%, zd%, pj() As Double)
'****************************************************************************************
'  功能  :  求m列矩阵从第qd列到第zd列的平均
'  参数  :  a为待求矩阵;m为矩阵的行数;qd为起始列下标;zd终止列下标
'  返回值:  pj返回最终结果,是一m为列向量
'****************************************************************************************
ReDim pj(m) As Double
For i = 1 To m
    For j = qd To zd
        pj(i) = pj(i) + A(j, i)
    Next j
    pj(i) = pj(i) / (zd - qd + 1)
Next i
End Sub
Sub licha(A() As Double, m%, qd%, zd%, lc() As Double)
'****************************************************************************************
'  功能  :  求m列矩阵从第qd列到第zd列的离差
'  参数  :  a为待求矩阵;m为矩阵的行数;qd为起始列下标;zd终止列下标
'  返回值:  lc返回最终结果,是一m为列向量
'****************************************************************************************
ReDim lc(m, m) As Double '原来的lc矩阵可能已存入非零数据,所以要重新声明使其数据均为零
Dim pj1() As Double
Call pingjun(A(), m, qd, zd, pj1())
For r = 1 To m
    For t = 1 To m
        For j = qd To zd
          sum = sum + (A(j, t) - pj1(t)) * (A(j, r) - pj1(r))
        Next j
        lc(t, r) = sum
        sum = 0
Next t, r
End Sub
Sub chengfa(n() As Double, p() As Double, m() As Double)
'****************************************************************************************
'  功能  :  求两矩阵的乘积
'  参数  :  n,p为待求乘积的两矩阵(n的列数必须与p的行数相同,否则结果无效)
'  返回值:  m返回乘积结果的矩阵,行数与n的相同,列数与p的相同
'**************************************************************************************
A = UBound(n, 1): B = UBound(n, 2): B = UBound(p, 1): c = UBound(p, 2)
ReDim m(A, c)
For i = 1 To A
      For j = 1 To c
          For k = 1 To B
            m(i, j) = m(i, j) + n(i, k) * p(k, j)
        Next
    Next
  Next
End Sub
Sub zhuanzhi(A() As Double, B() As Double)
'****************************************************************************************
'  功能  :  求矩阵的转置
'  参数  :  a为待求矩阵
'  返回值:  b返回最终结果即a的转置
'****************************************************************************************
m = UBound(A, 1): n = UBound(A, 2)
ReDim B(n, m)
For i = 1 To n
  For j = 1 To m
    B(i, j) = A(j, i)
  Next j
Next i
End Sub
Sub MRinv(n As Integer, A() As Double, mtxA() As Double, flag As Boolean)
'****************************************************************************************
'  功能  :  用全选主元高斯-约当法实现矩阵求逆
'  参数  :  a为待求矩阵;n为其阶数
'  返回值: flag返回False表示求逆失败(无逆),返回True表示求逆成功结果存入mtxA矩阵
'****************************************************************************************
ReDim nIs(n) As Integer, nJs(n) As Integer
Dim i As Integer, j As Integer, k As Integer
Dim d As Double, p As Double
For i = 1 To n
    For j = 1 To n
    mtxA(i, j) = A(i, j)
Next j, i
' 全选主元,消元
For k = 1 To n
    d = 0#
    For i = k To n
        For j = k To n
            p = Abs(mtxA(i, j))
            If (p > d) Then
                d = p
                nIs(k) = i
                nJs(k) = j
            End If
        Next j
    Next i
    ' 求解失败
    If (d + 1# = 1#) Then
        flag = False
        Exit Sub
    End If

    If (nIs(k) <> k) Then
        For j = 1 To n
            p = mtxA(k, j)
            mtxA(k, j) = mtxA(nIs(k), j)
            mtxA(nIs(k), j) = p
        Next j
    End If

    If (nJs(k) <> k) Then
        For i = 1 To n
            p = mtxA(i, k)
            mtxA(i, k) = mtxA(i, nJs(k))
            mtxA(i, nJs(k)) = p
        Next i
    End If

    mtxA(k, k) = 1# / mtxA(k, k)
    For j = 1 To n
        If (j <> k) Then mtxA(k, j) = mtxA(k, j) * mtxA(k, k)
    Next j

⌨️ 快捷键说明

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