Shafayat__

Untitled

Jul 16th, 2023
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. x = np.array([0+0j, 1+0j, 2+0j, 3+0j, 4+0j, 5+0j, 6+0j, 7+0j])
  5. N = len(x)
  6. m = int(np.log2(N))
  7. idx = np.arange(N)
  8. idx = ((idx & 1) << (m - 1)) | (idx >> 1)  
  9. x = x[idx]
  10. count = 0
  11. for s in range(1, m + 1):
  12.     bsep = 2 ** s
  13.     p = N // bsep
  14.     bwidth = bsep // 2
  15.     for j in range(bwidth):
  16.         r = p * j
  17.         theta = 2 * np.pi * r / N
  18.         wn = np.cos(theta) - np.sin(theta) * 1j
  19.  
  20.         for topval in range(j, N, bsep):
  21.             botval = topval + bwidth
  22.             temp = x[botval] * wn
  23.             x[botval] = x[topval] - temp
  24.             x[topval] = x[topval] + temp
  25.     print("Output after layer",count+1,"=", x, "\n")
  26.     count += 1
  27.  
  28. print("Final Output = ", x)
  29. plt.stem(range(N), np.real(x), label='Real', linefmt='C0-', markerfmt='C0o', basefmt='C0-')
  30. plt.stem(range(N), np.imag(x), label='Imaginary', linefmt='C1-', markerfmt='C1o', basefmt='C1-')
  31. plt.xlabel('Index')
  32. plt.ylabel('Value')
  33. plt.legend()
  34. plt.show()
  35.  
Advertisement
Add Comment
Please, Sign In to add comment