Liu/papercode/PowerAdversary-master/DNN/Signal_generation.py

91 lines
2.4 KiB
Python
Raw Normal View History

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)