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

📄 form1.frm

📁 实现离散信道容量的一般计算方法
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   BackColor       =   &H00FFFFC0&
   Caption         =   "离散信道容量的一般计算方法"
   ClientHeight    =   9285
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   12420
   LinkTopic       =   "Form1"
   ScaleHeight     =   9285
   ScaleWidth      =   12420
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command1 
      BackColor       =   &H0080C0FF&
      Caption         =   "退出"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   9
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   5520
      Style           =   1  'Graphical
      TabIndex        =   12
      Top             =   8760
      Width           =   1215
   End
   Begin VB.PictureBox Picture4 
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FFC0C0&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   2655
      Left            =   6720
      ScaleHeight     =   2595
      ScaleWidth      =   3435
      TabIndex        =   10
      Top             =   6000
      Width           =   3495
   End
   Begin VB.PictureBox Picture3 
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FFC0C0&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   2655
      Left            =   2160
      ScaleHeight     =   2595
      ScaleWidth      =   3435
      TabIndex        =   9
      Top             =   6000
      Width           =   3495
   End
   Begin VB.TextBox Text2 
      BackColor       =   &H00FF80FF&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   7200
      TabIndex        =   7
      Top             =   4560
      Width           =   1935
   End
   Begin VB.PictureBox Picture2 
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FFC0C0&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   1695
      Left            =   3240
      ScaleHeight     =   1635
      ScaleWidth      =   2355
      TabIndex        =   3
      Top             =   3840
      Width           =   2415
   End
   Begin VB.CommandButton Command2 
      BackColor       =   &H0080C0FF&
      Caption         =   "输出信道矩阵"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   2280
      Style           =   1  'Graphical
      TabIndex        =   2
      Top             =   2400
      Width           =   1815
   End
   Begin VB.TextBox Text1 
      BackColor       =   &H00C0FFFF&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   495
      Left            =   2280
      TabIndex        =   1
      Top             =   1320
      Width           =   1815
   End
   Begin VB.PictureBox Picture1 
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FFC0C0&
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   10.5
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   3375
      Left            =   4440
      ScaleHeight     =   3315
      ScaleWidth      =   4155
      TabIndex        =   0
      Top             =   240
      Width           =   4215
   End
   Begin VB.Label Label5 
      BackColor       =   &H00FFFFC0&
      Caption         =   "输入端的概率分布P(xi)"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   255
      Left            =   6960
      TabIndex        =   11
      Top             =   5640
      Width           =   2895
   End
   Begin VB.Label Label4 
      BackColor       =   &H00FFFFC0&
      Caption         =   "输出端的概率分布P(yj)"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   255
      Left            =   2520
      TabIndex        =   8
      Top             =   5640
      Width           =   2895
   End
   Begin VB.Label Label3 
      BackColor       =   &H00FFFFC0&
      Caption         =   "信道容量"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   14.25
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00FF0000&
      Height          =   255
      Left            =   7440
      TabIndex        =   6
      Top             =   3960
      Width           =   1455
   End
   Begin VB.Label Label2 
      BackColor       =   &H00FFFFC0&
      Caption         =   "b值"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   255
      Left            =   2520
      TabIndex        =   5
      Top             =   4440
      Width           =   735
   End
   Begin VB.Label Label1 
      BackColor       =   &H00FFFFC0&
      Caption         =   "输入矩阵行数"
      BeginProperty Font 
         Name            =   "宋体"
         Size            =   12
         Charset         =   134
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   255
      Left            =   2280
      TabIndex        =   4
      Top             =   840
      Width           =   2175
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Base 1
Dim b1()
Dim b2()
Dim a As Integer
 

Private Sub Command2_Click()
Picture1.Cls
Picture2.Cls
a = Val(Text1.Text)
ReDim b1(a, a + 1)
ReDim b2(a, a + 1)
For i = 1 To a
   For j = 1 To a
   b1(i, j) = Val(InputBox("输入第" & i & "行第" & j & "列的值:"))
   Picture1.Print b1(i, j);
Next j
Picture1.Print
Next i
For i = 1 To a
   f = 0
For j = 1 To a
 If b1(i, j) = 0 Then
  f = f
 Else
  f = f + b1(i, j) * (Log(b1(i, j)) / Log(2))
End If
Next j
b1(i, a + 1) = f
Next i
Dim ai As String
g b1, ai
Picture2.Print ai
End Sub
Function D(ByRef f1) As Single
Dim i As Long, j As Long, k  As Long, h  As Long, ri As Long
Dim r As Long, c As Long, Pi  As Single, Pi2 As Single, t() As Single
D = 1
Dim m
m = f1
h = UBound(m, 1)
If Not UBound(m, 2) = h + 1 Then MsgBox "无解!": Exit Function
ReDim t(1 To h)
For i = 1 To h
 Pi = 0
  For j = i To h
    For k = i To h
    If Abs(m(k, j)) > Pi Then
    Pi = Abs(m(k, j))
r = k:  c = j
End If
Next k
Next j
If Pi = 0 Then D = 0:  Exit Function
If r <> i Then
    ri = ri + 1
For j = 1 To h
    t(j) = m(i, j)
    m(i, j) = m(r, j)
    m(r, j) = t(j)
  Next j
End If
If c <> i Then
 ri = ri + 1
 For j = 1 To h
    t(j) = m(j, i)
    m(j, i) = m(j, c)
    m(j, c) = t(j)
Next j
End If
  Pi = m(i, i)
  D = D * Pi
For j = i + 1 To h
Pi2 = m(j, i)
If Pi2 <> 0 Then
 For k = 1 To h
    m(j, k) = m(j, k) - m(i, k) * Pi2 / Pi
    Next
End If
Next
Next
D = D * (-1) ^ ri
  End Function
    
  Sub g(ByRef f1(), ByRef ai As String)
  Picture3.Cls
  Picture4.Cls
  Dim h As Integer, i As Integer, D0 As Single
  Dim m
  Dim jg() As String
  h = UBound(f1, 1)
  ReDim jg(1 To h)
  D0 = D(f1)
  If D0 = 0 Then MsgBox "无解!":      Exit Sub
  For i = 1 To h
    m = f1
  For j = 1 To h
  m(j, i) = f1(j, h + 1)
  Next
 jg(i) = D(m) / D0
  Sum = Sum + 2 ^ (D(m) / D0)
  Next
  c = Log(Sum) / Log(2)
  Text2.Text = c
  ai = Join(jg, vbCrLf)
  
  Dim yy() As String
  row = UBound(f1, 1)
  ReDim jg(1 To h)
  ReDim yy(1 To h)
  D0 = D(f1)
  If D0 = 0 Then MsgBox "无解!":      Exit Sub
  For i = 1 To h
     m = f1
  For j = 1 To h
  m(j, i) = f1(j, h + 1)
  Next
  jg(i) = D(m) / D0
  yy(i) = 2 ^ (jg(i) - c)
  Picture3.Print yy(i)
  Next
  
  For i = 1 To a
    For j = 1 To a
    b2(i, j) = b1(j, i)
    Next j
  Next i
  For i = 1 To a
b2(i, a + 1) = yy(i)
  Next i
     Dim ai2 As String
  g2 b2, ai2
  Picture4.Print ai2
  End Sub

 Sub g2(ByRef f12(), ByRef ai2 As String)
  Dim h As Integer, i As Integer, D0 As Single
  Dim m
  Dim jg() As String
  h = UBound(f12, 1)
  ReDim jg(1 To h)
  D0 = D(f12)
  If D0 = 0 Then MsgBox "无解!":  Exit Sub
  For i = 1 To h
    m = f12
  For j = 1 To h
  m(j, i) = f12(j, h + 1)
  Next
  jg(i) = D(m) / D0
  Next
  ai2 = Join(jg, vbCrLf)
 End Sub

Private Sub Command1_Click()
End
End Sub

⌨️ 快捷键说明

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