91 lines
2.4 KiB
Python
91 lines
2.4 KiB
Python
import numpy as np
|
|
import csv
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
def voltage_sag(signal, level):
|
|
x=np.linspace(4*np.pi, 10*np.pi, 300)
|
|
y=level*np.sin(x)
|
|
signal[200:500]=y
|
|
return signal
|
|
|
|
def voltage_distortion(signal, level):
|
|
noise=np.random.normal(loc=0, scale=level, size=np.shape(signal))
|
|
signal+=noise
|
|
#plt.plot(signal)
|
|
#plt.show()
|
|
|
|
return signal
|
|
|
|
|
|
def voltage_impulse(signal, level):
|
|
noise=np.random.normal(loc=0, scale=level, size=np.shape(signal))
|
|
signal[400:420]+=noise[400:420]
|
|
#plt.plot(signal)
|
|
#plt.show()
|
|
|
|
return signal
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
x = np.linspace(0 * np.pi, 20* np.pi, 1000)
|
|
y = np.sin(x)
|
|
signal=y
|
|
signal_all=[]
|
|
'''for i in range(200):
|
|
levels=np.random.uniform(0.5, 0.9)
|
|
#print(levels)
|
|
signals=voltage_sag(signal, level=levels)
|
|
#plt.plot(signals)
|
|
#plt.show()
|
|
signal_all.append(np.copy(signals))
|
|
signal_all=np.array(signal_all, dtype=float).reshape(-1,1000)
|
|
with open('sag.csv', 'w') as f:
|
|
writer = csv.writer(f)
|
|
writer.writerows(signal_all)'''
|
|
|
|
|
|
'''signal_all=[]
|
|
for i in range(200):
|
|
levels=np.random.uniform(0.0, 0.1)
|
|
#print(levels)
|
|
signals=voltage_distortion(signal, level=levels)
|
|
#plt.plot(signals)
|
|
#plt.show()
|
|
signal_all.append(np.copy(signals))
|
|
signal_all=np.array(signal_all, dtype=float).reshape(-1,1000)
|
|
with open('distortion.csv', 'w') as f:
|
|
writer = csv.writer(f)
|
|
writer.writerows(signal_all)'''
|
|
|
|
|
|
'''signal_all=[]
|
|
for i in range(200):
|
|
levels=np.random.uniform(0.5, 0.8)
|
|
#print(levels)
|
|
signals=voltage_impulse(signal, level=levels)
|
|
#plt.plot(signals)
|
|
#plt.show()
|
|
signal_all.append(np.copy(signals))
|
|
signal_all=np.array(signal_all, dtype=float).reshape(-1,1000)
|
|
with open('impulse.csv', 'w') as f:
|
|
writer = csv.writer(f)
|
|
writer.writerows(signal_all)'''
|
|
|
|
signal_all = []
|
|
for i in range(200):
|
|
levels = np.random.uniform(0.0, 0.01)
|
|
# print(levels)
|
|
signals = voltage_distortion(signal, level=levels)
|
|
# plt.plot(signals)
|
|
# plt.show()
|
|
signal_all.append(np.copy(signals))
|
|
signal_all = np.array(signal_all, dtype=float).reshape(-1, 1000)
|
|
with open('normal.csv', 'w') as f:
|
|
writer = csv.writer(f)
|
|
writer.writerows(signal_all)
|
|
|
|
|