Shafayat__

Untitled

Jul 23rd, 2023
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.09 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. N = int(input('Enter the length of the signal: '))
  5.  
  6. signal_types = [
  7.     ('cos(2*pi*n)', lambda n: np.cos(2 * np.pi * n)),
  8.     ('sin(pi*n)', lambda n: np.sin(np.pi * n)),
  9.     ('3n^3 + 2n^2 + 5n + 2', lambda n: 3 * n**3 + 2 * n**2 + 5 * n + 2),
  10.     ('Unit Ramp', lambda n: n),
  11.     ('Unit Step', lambda n: np.ones_like(n))
  12. ]
  13.  
  14. for signal_name, signal_func in signal_types:
  15.     n = np.arange(N)
  16.     x = signal_func(n)
  17.  
  18.     W = np.exp(-1j * 2 * np.pi * np.outer(n, n.T) / N)
  19.    
  20.     X = np.dot(W, x)
  21.  
  22.     magnitude = np.abs(X)
  23.     phase = np.angle(X)
  24.  
  25.     plt.figure()
  26.     plt.subplot(2, 1, 1)
  27.     plt.stem(magnitude)
  28.     plt.xlabel('Frequency')
  29.     plt.ylabel('Magnitude')
  30.     plt.title(f'{signal_name} - Magnitude spectrum')
  31.  
  32.     plt.subplot(2, 1, 2)
  33.     plt.stem(phase)
  34.     plt.xlabel('Frequency')
  35.     plt.ylabel('Phase')
  36.     plt.title(f'{signal_name} - Phase spectrum')
  37.  
  38.     plt.tight_layout()
  39.  
  40.    
  41.     print(f'Final complex output for {signal_name}:')
  42.     print(X)
  43.    
  44. print(f'Twiddle factor:')
  45. print(W)
  46.  
  47. plt.show()
  48.  
Advertisement
Add Comment
Please, Sign In to add comment