Все это сделано в Python (через Google Colab) с библиотеками CMATH, Numpy и Matplotlib. В том же духе BK-это коэффициенты Фурье сигнала b. < /P>
(следующий код исправляется вместе, так как он находится в стиле ноутбука): < /p>
Код: Выделить всё
import numpy as np
import cmath
import matplotlib.pyplot as plt
D=1000
j = complex(0, 1)
pi = np.pi
N = 2 * D + 1
# initializing signal a[n]
a=np.zeros(2*D+1)
for i in range(-99,100):
a[i+D] = 1
# function to do DFST (either inverse or regular)
def fourier_series_transform(data, D, inverse=False):
j = complex(0, 1)
pi = np.pi
N = 2 * D + 1
# Allocate result array
result = np.zeros(N, dtype=complex)
if inverse:
# Inverse transform: reconstruct time-domain signal from bk
for n in range(-D, D + 1):
for k in range(-D, D + 1):
result[n + D] += data[k + D] * cmath.exp(j * 2 * pi * k * n / N)
else:
# Forward transform: compute bk from b[n]
for k in range(-D, D + 1):
for n in range(-D, D + 1):
result[k + D] += (1 / N) * data[n + D] * cmath.exp(-j * 2 * pi * k * n / N)
return result
# getting ak from a
ak = fourier_series_transform(a, D)
Код: Выделить всё
# initialization of bk
bk = np.zeros(N, dtype=complex)
# defining bk - n=100 - which means the signal b[n] is moved 100 units to the right
for k in range(-D, D + 1):
bk[k + D] = ak[k + D] * cmath.exp(-j * 2 * pi * k * 100 / N)
# getting the original signal b[n]
b = fourier_series_transform(bk, D, inverse=True)
pr> https://i.sstatic.net/fvoqii6t.png"/p>. alt = "Введите описание изображения здесь" src = "https://i.sstatic.net/1mw7gs3l.png"/>
Как вы можете видеть до -190 и после 190, если единица цифры составляет 1 (т.е. 841, -561, -191). область отбора проб (значение от [-1000, -190] и [190,1000]).>
Подробнее здесь: https://stackoverflow.com/questions/795 ... efficients