Ошибка компиляции Sub или Function не определены (VBA) - PullRequest
0 голосов
/ 27 мая 2018

При запуске кода появилось сообщение «Ошибка компиляции: Sub или Function не определены».Я находил решения, но все они не работали.Кто-нибудь знает, пожалуйста, помогите мне.Я не знаю о кодировании это моя домашняя работа.Профессор дает нам этот код для обработки данных нашего эксперимента.Вот он мой код

Function FFTRec(N As Integer, theta As Double, ar() As Double, ai() As Double, tmpr() As Double, tmpi() As Double)
    Dim nh As Integer, j As Integer
    Dim xr, xi, wr, wi, tmp2r(512) As Double, tmp2i(512) As Double

    If N > 1 Then
    nh = N / 2
    For j = 0 To nh - 1
        tmpr(j) = ar(j) + ar(nh + j)
        tmpi(j) = ai(j) + ai(nh + j)
        xr = ar(j) - ar(nh + j)
        xi = ai(j) - ai(nh + j)
        wr = Cos(theta * j)
        wi = Sin(theta * j)
        tmp2r(j) = xr * wr - xi * wi
        tmp2i(j) = xi * wr + xr * wi
    Next j
    Call FFTRec(nh, 2 * theta, tmpr, tmpi, ar, ai)
    Call FFTRec(nh, 2 * theta, tmp2r, tmp2i, ar, ai)
    For j = 0 To nh - 1
        ar(2 * j) = tmpr(j)
        ai(2 * j) = tmpi(j)
        ar(2 * j + 1) = tmp2r(j)
        ai(2 * j + 1) = tmp2i(j)
    Next j
    End If
 End Function
 Public Sub FFT()
    Dim xr(512) As Double, xi(512) As Double, tmpr(512) As Double, tmpi(512) As Double
    Dim pi, wm, theta As Double
    Dim i, Tr, N As Integer
    Dim curStartTime, curEndTime, curFreq As Currency

    i = 0: N = 512: Tr = 6
    pi = WorksheetFunction.pi
    theta = 2 * pi / N

    For i = 1 To N
        xr(i - 1) = Cells(i + Tr - 1, 2): xi(i - 1) = 0
    Next i

    Call QueryPerformanceFreQuency(curFreq)
    Call QueryPerformanceCounter(curStartTime)

    Call FFTRec(N, theta, xr, xi, tmpr, tmpi)

    Call QueryPerformanceCounter(curEndTime)
    Cells(1, 9) = "Processing Time " & CStr((curEndTime - curStartTime) / curFreq) & " Second"

    Cells(Tr - 1, 9) = "xr(i)_FFT": Cells(Tr - 1, 10) = "xi(i)_FFT": Cells(Tr - 1, 11) = "P_FFT"
    For i = 0 To N - 1
        Cells(i + Tr, 9) = xr(i)
     Cells(i + Tr, 10) = xi(i)
    Cells(i + Tr, 11) = Sqr(xr(i) ^ 2 + xi(i) ^ 2)
    Next i
 End Sub

Код

Ошибка

Кстати, я не являюсь носителем языка.

Спасибо.

1 Ответ

0 голосов
/ 27 мая 2018

Функция QueryPerformanceFrequency не определена.Вы должны определить это где-нибудь.Я думаю, что это должно исправить это.Здесь есть код здесь , который вы можете попробовать.

Иначе просто попросите своего профессора предоставить код для определения QueryPerformanceFrequency

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...