Sub DFT() Dim k As Integer, n As Integer, Np As Integer Dim dt As Single, ang As Single, w0 As Single, real As Single, imag As Single Dim pi As Single Dim r As Range 'pega os dados dos pontos Set r = Application.InputBox(prompt:="Enter data columns t - f(t):", Type:=8) 'Set r = Range("b8:c119") Np = r.Rows.Count 'verifica se existem dados If Np = 0 Then MsgBox "Nodata supplied! Aborted", vbOKOnly Exit Sub End If ' verifica se a frequencia é constante dt = r(2, 1) - r(1, 1) For k = 3 To Np If r(k, 1) - r(k - 1, 1) <> dt Then MsgBox "Data frequency not constant! Aborted", vbOKOnly Exit Sub End If Next k 'calcula o espectro pi = 4 * Atn(1) w0 = 2 * pi / Np For k = 1 To Np \ 2 real = 0 imag = 0 For n = 1 To Np ang = (k - 1) * w0 * (n - 1) real = real + r(n, 2) * Cos(ang) / Np imag = imag - r(n, 2) * Sin(ang) / Np Next n 'escreve a frequencia r(k, 3) = (k - 1) / (dt) / Np 'escreve a amplitude r(k, 4) = Sqr(real ^ 2 + imag ^ 2) * 2 Next k End Sub