Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import matplotlib.pyplot as plt
- N = int(input('Enter the length of the signal: '))
- signal_types = [
- ('cos(2*pi*n)', lambda n: np.cos(2 * np.pi * n)),
- ('sin(pi*n)', lambda n: np.sin(np.pi * n)),
- ('3n^3 + 2n^2 + 5n + 2', lambda n: 3 * n**3 + 2 * n**2 + 5 * n + 2),
- ('Unit Ramp', lambda n: n),
- ('Unit Step', lambda n: np.ones_like(n))
- ]
- for signal_name, signal_func in signal_types:
- n = np.arange(N)
- x = signal_func(n)
- W = np.exp(-1j * 2 * np.pi * np.outer(n, n.T) / N)
- X = np.dot(W, x)
- magnitude = np.abs(X)
- phase = np.angle(X)
- plt.figure()
- plt.subplot(2, 1, 1)
- plt.stem(magnitude)
- plt.xlabel('Frequency')
- plt.ylabel('Magnitude')
- plt.title(f'{signal_name} - Magnitude spectrum')
- plt.subplot(2, 1, 2)
- plt.stem(phase)
- plt.xlabel('Frequency')
- plt.ylabel('Phase')
- plt.title(f'{signal_name} - Phase spectrum')
- plt.tight_layout()
- print(f'Final complex output for {signal_name}:')
- print(X)
- print(f'Twiddle factor:')
- print(W)
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment