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

📄 form1.frm

📁 夲程序实现了FIR数字滤波器的设计
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form1 
   BackColor       =   &H00FFC0FF&
   Caption         =   "FIR数字滤波器设计"
   ClientHeight    =   8595
   ClientLeft      =   60
   ClientTop       =   450
   ClientWidth     =   10230
   LinkTopic       =   "Form1"
   ScaleHeight     =   8595
   ScaleWidth      =   10230
   StartUpPosition =   3  '窗口缺省
   Begin VB.TextBox Text7 
      Height          =   375
      Left            =   1080
      TabIndex        =   23
      Top             =   5880
      Width           =   975
   End
   Begin VB.CommandButton Command4 
      Caption         =   "查看"
      Height          =   375
      Left            =   3840
      TabIndex        =   22
      Top             =   5760
      Width           =   1575
   End
   Begin VB.CommandButton Command3 
      Caption         =   "查看"
      Height          =   375
      Left            =   3720
      TabIndex        =   21
      Top             =   3240
      Width           =   1575
   End
   Begin VB.TextBox Text6 
      Height          =   375
      Left            =   1080
      TabIndex        =   15
      Top             =   5280
      Width           =   975
   End
   Begin VB.TextBox Text5 
      Height          =   375
      Left            =   1080
      TabIndex        =   14
      Top             =   4680
      Width           =   975
   End
   Begin VB.TextBox Text4 
      Height          =   375
      Left            =   1080
      TabIndex        =   13
      Top             =   4080
      Width           =   975
   End
   Begin VB.PictureBox Picture3 
      BackColor       =   &H00C0FFFF&
      Height          =   2295
      Left            =   2040
      ScaleHeight     =   2235
      ScaleWidth      =   8115
      TabIndex        =   10
      Top             =   6120
      Width           =   8175
   End
   Begin VB.PictureBox Picture2 
      BackColor       =   &H00C0FFFF&
      Height          =   2175
      Left            =   2040
      ScaleHeight     =   2115
      ScaleWidth      =   8115
      TabIndex        =   9
      Top             =   3600
      Width           =   8175
   End
   Begin VB.CommandButton Command2 
      Caption         =   "退出"
      Height          =   615
      Left            =   480
      TabIndex        =   5
      Top             =   7200
      Width           =   975
   End
   Begin VB.PictureBox Picture1 
      BackColor       =   &H00C0FFFF&
      Height          =   2055
      Left            =   2040
      ScaleHeight     =   1995
      ScaleWidth      =   8115
      TabIndex        =   4
      Top             =   1200
      Width           =   8175
   End
   Begin VB.TextBox Text3 
      BackColor       =   &H00FFFFC0&
      Height          =   615
      Left            =   8040
      TabIndex        =   3
      Top             =   480
      Width           =   975
   End
   Begin VB.TextBox Text2 
      BackColor       =   &H00FFFFC0&
      Height          =   615
      Left            =   6240
      TabIndex        =   2
      Top             =   480
      Width           =   975
   End
   Begin VB.TextBox Text1 
      BackColor       =   &H00FFFFC0&
      Height          =   615
      Left            =   4440
      TabIndex        =   1
      Top             =   480
      Width           =   975
   End
   Begin VB.CommandButton Command1 
      Caption         =   "查看"
      Height          =   615
      Left            =   720
      TabIndex        =   0
      Top             =   2040
      Width           =   975
   End
   Begin VB.Label Label11 
      BackColor       =   &H00FFC0FF&
      Caption         =   "N值"
      Height          =   375
      Left            =   360
      TabIndex        =   24
      Top             =   6000
      Width           =   855
   End
   Begin VB.Label Label10 
      BackColor       =   &H00FFC0FF&
      Caption         =   "经过滤波器后的频谱"
      Height          =   375
      Left            =   2040
      TabIndex        =   20
      Top             =   5880
      Width           =   2175
   End
   Begin VB.Label Label9 
      BackColor       =   &H00FFC0FF&
      Caption         =   "正弦信号的频谱"
      Height          =   375
      Left            =   2040
      TabIndex        =   19
      Top             =   3360
      Width           =   2775
   End
   Begin VB.Label Label8 
      BackColor       =   &H00FFC0FF&
      Caption         =   "幅值"
      Height          =   495
      Left            =   360
      TabIndex        =   18
      Top             =   5280
      Width           =   855
   End
   Begin VB.Label Label7 
      BackColor       =   &H00FFC0FF&
      Caption         =   "抽样频率"
      Height          =   495
      Left            =   240
      TabIndex        =   17
      Top             =   4680
      Width           =   1095
   End
   Begin VB.Label Label6 
      BackColor       =   &H00FFC0FF&
      Caption         =   "频率"
      Height          =   375
      Left            =   360
      TabIndex        =   16
      Top             =   4200
      Width           =   975
   End
   Begin VB.Label Label5 
      BackColor       =   &H00FFC0FF&
      Caption         =   "正弦信号"
      Height          =   495
      Left            =   240
      TabIndex        =   12
      Top             =   3720
      Width           =   1695
   End
   Begin VB.Label Label4 
      BackColor       =   &H00FFC0FF&
      Caption         =   "滤波器特性"
      Height          =   2055
      Left            =   840
      TabIndex        =   11
      Top             =   1320
      Width           =   1575
   End
   Begin VB.Label Label3 
      BackColor       =   &H00FFC0FF&
      Caption         =   "窗口类型"
      Height          =   615
      Left            =   8160
      TabIndex        =   8
      Top             =   120
      Width           =   1575
   End
   Begin VB.Label Label2 
      BackColor       =   &H00FFC0FF&
      Caption         =   "过度带宽DF"
      Height          =   615
      Left            =   6360
      TabIndex        =   7
      Top             =   120
      Width           =   1695
   End
   Begin VB.Label Label1 
      BackColor       =   &H00FFC0FF&
      Caption         =   "数字截止频率FH"
      Height          =   615
      Left            =   4320
      TabIndex        =   6
      Top             =   120
      Width           =   1455
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Dim w(0 To 500), a(0 To 10), h(0 To 500), D As Double
Dim t(-5 To 500), tr(-5 To 500), ti(-5 To 500), max As Double
Dim i, j, k, N, NA1, NS1, I2, IS1, IV As Integer
Const M_PI = 3.1415926
Picture1.Cls
Picture1.Scale (-1, 2)-(15, -1)
Picture1.Line (-1, 0)-(15, 0)
Picture1.Line (0, 2)-(0, -0.5)
FH = Text1.Text
DF = Text2.Text
window_type = Text3.Text
Select Case window_type
   Case 1
   a(0) = 1
   a(1) = -0
   a(2) = 0
   a(3) = -0
   D = 2
  Case 2
   a(0) = 0.5
   a(1) = -0.5
   a(2) = 0
   a(3) = -0
   D = 4
  Case 3
   a(0) = 0.54
   a(1) = -0.46
   a(2) = 0
   a(3) = -0
   D = 4
  Case 4
   a(0) = 0.42
   a(1) = -0.5
   a(2) = 0.08
   a(3) = -0
   D = 6
  Case 5
   a(0) = 0.44959
   a(1) = -0.49755
   a(2) = 0.05677
   a(3) = -0
   D = 5.5
  Case 6
   a(0) = 0.42323
   a(1) = -0.49755
   a(2) = 0.07922
   a(3) = -0
   D = 6
  Case 7
   a(0) = 0.4021
   a(1) = -0.49703
   a(2) = 0.09392
   a(3) = -0.00188
   D = 7
  Case 8
   a(0) = 0.35878
   a(1) = -0.48829
   a(2) = 0.14128
   a(3) = -0.01168
   D = 9
End Select
N = D / DF + 1
NA1 = (N + 1) / 2
NS1 = (N - 1) / 2
For i = 0 To N Step 1
    w(i) = 0
    For j = 0 To 3 Step 1
        w(i) = w(i) + a(j) * Cos(2 * M_PI * i / (N - 1) * j)
    Next j
Next i
If N / 2 <> CDbl(N / 2) Then
For i = 0 To NA1 - 1 Step 1
    IS1 = i + NS1
    If i = 0 Then
    h(IS1) = 2 * FH
    Else: h(IS1) = 2 * (FH * Sin(2# * M_PI * i * FH) / (2 * M_PI * i * FH))
    End If
    IV = N - IS1 - 1
    h(IV) = h(IS1)
Next i
Else
   For i = -NS1 To NA1 Step 1
   IS1 = i + NS1
   h(IS1) = Sin(2 * M_PI * (i - 0.5) * FH) / (M_PI * (i - 0.5))
   Next i
End If
For i = 0 To N - 1 Step 1
   h(i) = h(i) * w(i)
Next i
For k = 0 To N - 1 Step 1
    tr(k) = 0
    ti(k) = 0
    For j = 0 To N - 1 Step 1
        tr(k) = tr(k) + h(j) * Cos(2 * M_PI * k * j / N)
        ti(k) = ti(k) + h(j) * Sin(2 * M_PI * k * j / N)
        Next j
    tr(k) = Sqr(tr(k) * tr(k) + ti(k) * ti(k))
Next k
For k = 0 To (N - 1) / 2 Step 1
Picture1.Line (k, tr(k))-(k + 1, tr(k + 1)), RGB(255, 0, 0)
Next k
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Command3_Click()
Dim X, Y, a, q, l, f, j, k, N As Single
   Dim t(-5 To 100), tr(-5 To 100), ti(-5 To 100), z(-5 To 100), max As Double
   Const pi = 3.1415926
   Picture2.Cls
   Picture2.Scale (-5, 300)-(100, -10)
   Picture2.Line (-4, 0)-(100, 0)
   Picture2.Line (0, 300)-(0, -5)
   Picture2.CurrentX = -2: Picture2.CurrentY = 50: Picture2.Print 0
   Picture2.CurrentX = -1: Picture2.CurrentY = 450: Picture2.Print "Y"
   Picture2.CurrentX = 90: Picture2.CurrentY = 50: Picture2.Print "X"
    a = Text6.Text
    f1 = Text5.Text
    N = Text7.Text
 For X = 0 To N - 1 Step 1
    Y = a * Sin(2 * pi * f1 * X + pi / 2)
    z(X) = Y
    Next X
 For k = 0 To N - 1 Step 1
    tr(k) = 0
    ti(k) = 0
    For j = 0 To N - 1 Step 1
        tr(k) = tr(k) + z(j) * Cos(2 * pi * k * j / N)
        ti(k) = ti(k) + z(j) * Sin(2 * pi * k * j / N)
        Next j
        tr(k) = Sqr(tr(k) * tr(k) + ti(k) * ti(k))
 Picture2.Line (k, 0)-(k, tr(k)), RGB(255, 0, 0)
    Next k
End Sub

Private Sub Command4_Click()
Dim w(0 To 500), a(0 To 10), h(0 To 500), D As Double
Dim t(-5 To 500), tr(-5 To 500), ti(-5 To 500), max As Double
Dim i, j, k, N, NA1, NS1, I2, IS1, IV As Integer
Const M_PI = 3.1415926
Picture3.Cls
Picture3.Scale (-1, 2)-(15, -1)
Picture3.Line (-1, 0)-(15, 0)
Picture3.Line (0, 2)-(0, -0.5)
FH = Text1.Text
DF = Text2.Text
window_type = Text3.Text
Select Case window_type
   Case 1
   a(0) = 1
   a(1) = -0
   a(2) = 0
   a(3) = -0
   D = 2
  Case 2
   a(0) = 0.5
   a(1) = -0.5
   a(2) = 0
   a(3) = -0
   D = 4
  Case 3
   a(0) = 0.54
   a(1) = -0.46
   a(2) = 0
   a(3) = -0
   D = 4
  Case 4
   a(0) = 0.42
   a(1) = -0.5
   a(2) = 0.08
   a(3) = -0
   D = 6
  Case 5
   a(0) = 0.44959
   a(1) = -0.49755
   a(2) = 0.05677
   a(3) = -0
   D = 5.5
  Case 6
   a(0) = 0.42323
   a(1) = -0.49755
   a(2) = 0.07922
   a(3) = -0
   D = 6
  Case 7
   a(0) = 0.4021
   a(1) = -0.49703
   a(2) = 0.09392
   a(3) = -0.00188
   D = 7
  Case 8
   a(0) = 0.35878
   a(1) = -0.48829
   a(2) = 0.14128
   a(3) = -0.01168
   D = 9
End Select
N = D / DF + 1
NA1 = (N + 1) / 2
NS1 = (N - 1) / 2
For i = 0 To N Step 1
    w(i) = 0
    For j = 0 To 3 Step 1
        w(i) = w(i) + a(j) * Cos(2 * M_PI * i / (N - 1) * j)
    Next j
Next i
If N / 2 <> CDbl(N / 2) Then
For i = 0 To NA1 - 1 Step 1
    IS1 = i + NS1
    If i = 0 Then
    h(IS1) = 2 * FH
    Else: h(IS1) = 2 * (FH * Sin(2# * M_PI * i * FH) / (2 * M_PI * i * FH))
    End If
    IV = N - IS1 - 1
    h(IV) = h(IS1)
Next i
Else
   For i = -NS1 To NA1 Step 1
   IS1 = i + NS1
   h(IS1) = Sin(2 * M_PI * (i - 0.5) * FH) / (M_PI * (i - 0.5))
   Next i
End If
For i = 0 To N - 1 Step 1
   h(i) = h(i) * w(i)
Next i
For k = 0 To N - 1 Step 1
    tr(k) = 0
    ti(k) = 0
    For j = 0 To N - 1 Step 1
        tr(k) = tr(k) + h(j) * Cos(2 * M_PI * k * j / N)
        ti(k) = ti(k) + h(j) * Sin(2 * M_PI * k * j / N)
        Next j
    tr(k) = Sqr(tr(k) * tr(k) + ti(k) * ti(k))
Next k
Dim X, Y, a1, f1 As Single
   Dim t1(-5 To 100), tr1(-5 To 100), ti1(-5 To 100), z1(-5 To 100), p(0 To 500) As Double
   Const pi = 3.1415926
   Picture3.Cls
   Picture3.Scale (-5, 300)-(100, -10)
   Picture3.Line (-4, 0)-(100, 0)
   Picture3.Line (0, 300)-(0, -5)
   Picture3.CurrentX = -2: Picture3.CurrentY = 50: Picture3.Print 0
   Picture3.CurrentX = -1: Picture3.CurrentY = 450: Picture3.Print "Y"
   Picture3.CurrentX = 90: Picture3.CurrentY = 50: Picture3.Print "X"
    a1 = Text6.Text
    N1 = Text7.Text
    f1 = Text5.Text
 For X = 0 To N1 - 1 Step 1
    Y = a1 * Sin(2 * pi * f1 * X + pi / 2)
    z1(X) = Y
    Next X
 For k = 0 To N1 - 1 Step 1
    tr1(k) = 0
    ti1(k) = 0
    For j = 0 To N1 - 1 Step 1
        tr1(k) = tr1(k) + z1(j) * Cos(2 * pi * k * j / N1)
        ti1(k) = ti1(k) + z1(j) * Sin(2 * pi * k * j / N1)
        Next j
        tr1(k) = Sqr(tr1(k) * tr1(k) + ti1(k) * ti1(k))
        p(k) = tr1(k) * tr(k)
 Next k
For k = 0 To N1 - 1 Step 1
    Picture3.Line (k, 0)-(k, p(k))
Next k
End Sub

⌨️ 快捷键说明

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