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

📄 dspcoco.frm

📁 数字信号处理的一个简单程序
💻 FRM
字号:
VERSION 5.00
Begin VB.Form coco_dxp1 
   Caption         =   "coco"
   ClientHeight    =   10080
   ClientLeft      =   1410
   ClientTop       =   825
   ClientWidth     =   12795
   LinkTopic       =   "Form1"
   ScaleHeight     =   10080
   ScaleWidth      =   12795
   Begin VB.TextBox Text12 
      BackColor       =   &H80000003&
      Height          =   495
      Left            =   8040
      TabIndex        =   28
      Text            =   "只读"
      Top             =   4440
      Width           =   1215
   End
   Begin VB.TextBox Text7 
      BackColor       =   &H80000003&
      Height          =   495
      Left            =   8040
      TabIndex        =   27
      Text            =   "只读"
      Top             =   3720
      Width           =   1215
   End
   Begin VB.PictureBox Picture3 
      Height          =   1815
      Left            =   1800
      ScaleHeight     =   1755
      ScaleWidth      =   4875
      TabIndex        =   26
      Top             =   7800
      Width           =   4935
   End
   Begin VB.PictureBox Picture2 
      Height          =   1815
      Left            =   1800
      ScaleHeight     =   1755
      ScaleWidth      =   4875
      TabIndex        =   25
      Top             =   5040
      Width           =   4935
   End
   Begin VB.TextBox Text11 
      Height          =   495
      Left            =   10920
      TabIndex        =   23
      Text            =   "4"
      Top             =   1080
      Width           =   1215
   End
   Begin VB.TextBox Text10 
      Height          =   495
      Left            =   9360
      TabIndex        =   22
      Text            =   "2"
      Top             =   1080
      Width           =   1215
   End
   Begin VB.TextBox Text9 
      Height          =   495
      Left            =   9360
      TabIndex        =   21
      Text            =   "10"
      Top             =   480
      Width           =   1215
   End
   Begin VB.TextBox Text8 
      Height          =   495
      Left            =   9360
      TabIndex        =   20
      Text            =   "10"
      Top             =   0
      Width           =   1215
   End
   Begin VB.TextBox Text6 
      Height          =   495
      Left            =   4920
      TabIndex        =   19
      Text            =   "64"
      Top             =   600
      Width           =   1215
   End
   Begin VB.TextBox Text5 
      Height          =   495
      Left            =   4920
      TabIndex        =   18
      Text            =   "2.71828"
      Top             =   0
      Width           =   1215
   End
   Begin VB.CommandButton Command5 
      Caption         =   "结束"
      Height          =   615
      Left            =   360
      TabIndex        =   17
      Top             =   2760
      Width           =   615
   End
   Begin VB.PictureBox Picture1 
      Height          =   1815
      Left            =   1800
      ScaleHeight     =   1755
      ScaleWidth      =   4875
      TabIndex        =   15
      Top             =   2880
      Width           =   4935
   End
   Begin VB.TextBox Text4 
      Height          =   270
      Left            =   1320
      TabIndex        =   9
      Text            =   "16"
      Top             =   1320
      Width           =   975
   End
   Begin VB.TextBox Text3 
      Height          =   270
      Left            =   1320
      TabIndex        =   8
      Text            =   "0"
      Top             =   960
      Width           =   975
   End
   Begin VB.TextBox Text2 
      Height          =   270
      Left            =   1320
      TabIndex        =   7
      Text            =   "1"
      Top             =   600
      Width           =   975
   End
   Begin VB.TextBox Text1 
      Height          =   270
      Left            =   1320
      TabIndex        =   6
      Text            =   "1"
      Top             =   240
      Width           =   975
   End
   Begin VB.CommandButton Command3 
      Caption         =   "执行pulse"
      Height          =   495
      Left            =   8760
      TabIndex        =   2
      Top             =   2160
      Width           =   1215
   End
   Begin VB.CommandButton Command2 
      Caption         =   "执行e(x)"
      Height          =   495
      Left            =   4680
      TabIndex        =   1
      Top             =   2160
      Width           =   1215
   End
   Begin VB.CommandButton command1 
      Caption         =   "执行sin(x)"
      Height          =   495
      Left            =   1320
      TabIndex        =   0
      Top             =   2160
      Width           =   1215
   End
   Begin VB.Label Label15 
      Caption         =   "FFT"
      Height          =   495
      Left            =   1320
      TabIndex        =   33
      Top             =   8880
      Width           =   1215
   End
   Begin VB.Label Label14 
      Caption         =   "DFT"
      Height          =   495
      Left            =   1200
      TabIndex        =   32
      Top             =   5640
      Width           =   1215
   End
   Begin VB.Label Label13 
      Caption         =   "采样信号"
      Height          =   615
      Left            =   1080
      TabIndex        =   31
      Top             =   3480
      Width           =   735
   End
   Begin VB.Label Label12 
      Caption         =   "FFT个数"
      Height          =   495
      Left            =   7320
      TabIndex        =   30
      Top             =   4560
      Width           =   1215
   End
   Begin VB.Label Label7 
      Caption         =   "DFT个数"
      Height          =   495
      Left            =   7320
      TabIndex        =   29
      Top             =   3840
      Width           =   855
   End
   Begin VB.Label Label11 
      Caption         =   "抽样频率"
      Height          =   495
      Left            =   10920
      TabIndex        =   24
      Top             =   720
      Width           =   1215
   End
   Begin VB.Label Label10 
      Caption         =   "脉冲幅度"
      Height          =   255
      Left            =   8160
      TabIndex        =   16
      Top             =   1200
      Width           =   855
   End
   Begin VB.Label Label9 
      Caption         =   "脉冲宽度"
      Height          =   495
      Left            =   8160
      TabIndex        =   14
      Top             =   600
      Width           =   1215
   End
   Begin VB.Label Label8 
      Caption         =   "脉冲周期"
      Height          =   375
      Left            =   8160
      TabIndex        =   13
      Top             =   120
      Width           =   735
   End
   Begin VB.Label Label6 
      Caption         =   "抽样频率"
      Height          =   255
      Left            =   3960
      TabIndex        =   12
      Top             =   720
      Width           =   855
   End
   Begin VB.Label Label5 
      Caption         =   "底数e"
      Height          =   255
      Left            =   3960
      TabIndex        =   11
      Top             =   120
      Width           =   855
   End
   Begin VB.Label Label4 
      Caption         =   "抽样频率"
      Height          =   255
      Left            =   240
      TabIndex        =   10
      Top             =   1320
      Width           =   855
   End
   Begin VB.Label Label3 
      Caption         =   "初相位"
      Height          =   255
      Left            =   240
      TabIndex        =   5
      Top             =   960
      Width           =   975
   End
   Begin VB.Label Label2 
      Caption         =   "信号频率"
      Height          =   255
      Left            =   240
      TabIndex        =   4
      Top             =   600
      Width           =   975
   End
   Begin VB.Label Label1 
      Caption         =   "振幅"
      Height          =   255
      Left            =   240
      TabIndex        =   3
      Top             =   240
      Width           =   975
   End
End
Attribute VB_Name = "coco_dxp1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
Picture2.Cls
Picture1.Cls
Picture3.Cls
Dim a, b, c, i, k, y As Double
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
k = Val(Text4.Text)
pi = 3.1415926
Picture1.Scale (-0.01 / b, a)-(4.01 / b, -a)
Picture1.CurrentX = 0
Picture1.CurrentY = 0
Picture1.Line (0, 0)-(1 / b, 0), &H8080
Picture1.Line (0, -a)-(0, a), &H8080

Dim chou(0 To 4096) As Double
Dim ge%
ge = 0
For i = 0 To (4 / b - 1 / k / b) Step 1 / k / b       '在picture1中画x(n),并抽取数组
y = a * Sin(2 * pi * b * i + c)
chou(ge) = y
ge = ge + 1
Picture1.Line (i, 0)-(i, y), vbRed
Next i
Text7.Text = ge
Call DFT(chou())
Call FFT(chou())
End Sub


Private Sub Command2_Click()
Text7.Text = Val(Text6.Text)
Picture2.Cls
Picture1.Cls
Picture3.Cls
Dim e, k, t, i, y, sum, sumj, res, n, kk, summax As Double
e = Val(Text5.Text)
k = Val(Text6.Text)
t = 4

Picture1.Scale (-0.01 * t, e ^ t)-(t, -0.01 * e ^ t)           'picture1中画x(n),并抽取数组
Picture1.CurrentX = 0
Picture1.CurrentY = 0
Picture1.Line (0, 0)-(t, 0), &HFF00
Picture1.Line (0, 0)-(0, e ^ t), &HFF00

Dim chou(4096) As Double
n = 0
For i = 0 To t Step t / k
y = e ^ i
Picture1.Line (i, 0)-(i, y), vbRed
chou(n) = y
n = n + 1
Next i

Call DFT(chou())
Call FFT(chou())
End Sub


Private Sub Command3_Click()
Text7.Text = Val(Text11.Text)
Picture2.Cls
Picture1.Cls
Picture3.Cls
Dim chou(10000) As Double
Dim d, i, t, k, j, sum, sumj, res, n As Double
t = Val(Text8.Text)
d = Val(Text9.Text)
a = Val(Text10.Text)
j = Val(Text11.Text)
Picture1.Scale (-0.01 * 4 * t, a)-(4.01 * t, 0)
Picture1.CurrentX = 0
Picture1.CurrentY = 0
Picture1.Line (0, 0)-(4 * t, 0), vbBlue
Picture1.Line (0, 0)-(0, a), vbBlue
n = 0
k = 0
wqw: For i = 0 To n * t + d Step t / j
Picture1.Line (i, 0)-(i, a), vbRed
chou(k) = a
k = k + 1
Next i
For i = n * t + d + t / j To t * (n + 1) - t / j Step t / j
Picture1.Line (i, 0)-(i, 0), vbRed
chou(k) = 0
k = k + 1
Next i
n = n + 1
If n < 4 Then
GoTo wqw
End If

Call DFT(chou())
Call FFT(chou())
End Sub



Private Sub Command5_Click()
End
End Sub

Private Sub FFT(xr() As Double)
Dim i, j, a, b, k, m, n As Integer
Dim ep, arg, mt, s0, s1 As Integer
Dim pr, pi, ph, t, m_pi, f1, f2 As Double
Dim xi(0 To 4096), s(0 To 4096), c(0 To 4096) As Double

 n = Val(Text7): m = Val(Text7): m_pi = 3.1415926
 i = Round(Log(n) / Log(2))
 
 n = 2 ^ i
 m = 2 ^ i
 Text12.Text = n



For i = 0 To n
 xi(i) = 0
Next i
j = 0
'For i = 0 To n - 1 Step 1
 '   xr(i) = xr(i) / n
  '  xi(i) = xi(i) / n
'Next i

For i = 0 To n - 1 Step 1
    If i < j Then
       t = xr(i): xr(i) = xr(j): xr(j) = t
       t = xi(i): xi(i) = xi(j): xi(j) = t
    End If
    k = n / 2
    Do While k <= j
       j = j - k
       k = k / 2
    Loop
    j = j + k
Next i

ep = 0
i = n
Do While i <> 1
   ep = ep + 1
   i = i / 2
Loop
ph = 2 * m_pi / n

For i = 0 To n - 1 Step 1
    s(i) = Sin(ph * i)
    c(i) = Cos(ph * i)
Next i

a = 2
b = 1
For mt = 1 To ep Step 1
    s0 = n / a
    s1 = 0
    For k = 0 To b - 1 Step 1
        i = k
        Do While i < n
           arg = i + b
           If k = 0 Then
              pr = xr(arg)
              pi = xi(arg)
           Else
              pr = xr(arg) * c(s1) - xi(arg) * s(s1)
              pi = xr(arg) * s(s1) + xi(arg) * c(s1)
           End If
           
           xr(arg) = xr(i) - pr
           xi(arg) = xi(i) - pi
           xr(i) = xr(i) + pr
           xi(i) = xi(i) + pi
           i = i + a
        Loop
        s1 = s1 + s0
    Next k
    a = 2 * a
    b = 2 * b
Next mt
 
For i = 0 To n - 1 Step 1
    xr(i) = Sqr(xr(i) * xr(i) + xi(i) * xi(i))
    Picture3.Line (i, 0)-(i, xr(i)), vbRed
Next i
End Sub

Private Sub DFT(chou() As Double)
Dim num(4096) As Double
Dim i, k, sum, sumj, res, kk, n, summax, pi As Double
k = Val(Text7.Text)
pi = 3.1415926
sum = 0
sumj = 0
summax = 0                             '求x(k)中最大值以便定义picture2坐标
kk = 0
n = 0
ZZ: For i = 0 To k - 1
sum = sum + chou(i) * Cos(2 * pi * n * kk / k)
sumj = sumj - chou(i) * Sin(2 * pi * n * kk / k)
n = n + 1
Next i
res = Sqr(sum ^ 2 + sumj ^ 2)
num(kk) = res
If summax < res Then
 summax = res
End If
If kk < k Then
kk = kk + 1
n = 0
sum = 0
sumj = 0
GoTo ZZ
End If


Picture2.Scale (-0.01 * k, 1.9 * summax)-(1.01 * k, -0.01 * k)       '定义picture2
Picture2.Line (0, 0)-(k, 0), vbBlue
Picture2.Line (0, 0)-(0, 1.9 * summax), vbBlue
For i = 0 To k - 1
Picture2.Line (i, 0)-(i, num(i)), vbRed
Next i

Picture3.Scale (-0.01 * k, 1.9 * summax)-(1.01 * k, -0.01 * k)         '定义picture2
Picture3.Line (0, 0)-(k, 0), vbBlue
Picture3.Line (0, 0)-(0, 1.9 * summax), vbBlue
End Sub

⌨️ 快捷键说明

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