📄 form1.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 + -