import numpy as np
import matplotlib.pyplot as plt
fs = 10000
t = np.linspace(0, 1, fs, endpoint=False)
f_signal = 50
signal_50Hz = np.sin(2 * np.pi * f_signal * t)
noise = np.random.normal(0, 0.1, t.shape)
f_inverter = 2000
inverter_signal = np.sin(2 * np.pi * f_inverter * t)
inverter_noise = np.random.normal(0, 0.05, t.shape)
inverter_noisy_signal = inverter_signal + inverter_noise
final_signal = signal_50Hz + noise + inverter_noisy_signal
fourier_transform = np.fft.fft(final_signal)
freqs = np.fft.fftfreq(len(final_signal), 1/fs)
n = len(final_signal)
single_sided_fft = 2.0/n * np.abs(fourier_transform[:n//2])
single_sided_freqs = freqs[:n//2]
single_sided_fft_db = 20 * np.log10(single_sided_fft)
plt.figure(figsize=(12, 10))
plt.subplot(2, 1, 1)
plt.plot(t, final_signal, label='Final Signal')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.title('Three - phase Motor Line Current Single - phase Waveform with Noise (Time Domain)')
plt.legend()
plt.grid(True)
plt.subplot(2, 1, 2)
plt.plot(single_sided_freqs, single_sided_fft_db, label='Frequency Domain (dB)')
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude (dB)')
plt.title('Three - phase Motor Line Current Single - phase Waveform with Noise (Frequency Domain in dB)')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()