Was ich machen wollte. Matrixberechnung zum Lesen der erforderlichen Daten aus HSPICE und zum maschinellen Lernen.
Ich habe eine Schaltungssimulatorbibliothek namens DeCiDa gefunden, die auf Python3 ausgeführt wird. Mit dieser Bibliothek ist es möglich, den Schaltungssimulator direkt von DeCiDa aus zu betreiben, diesmal jedoch nur für die Datenkonvertierung.
Code
import numpy as np
from scipy import interpolate
from decida.Data import Data
d_sampling = 0.005
s_sampling = 0
e_sampling = 70
n_sampling = int((e_sampling - s_sampling)/d_sampling + 1)
time_r = np.linspace(s_sampling,e_sampling,n_sampling)
#read .tr0
d = Data()
d.read_hspice('xxx.tr0')
rows = d.nrows()
cols = d.ncols()
#delete unnecessary cols
leave_cols = [0,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,42]
n_leave_cols = len(leave_cols)
for i in range( cols ):
j = cols - i
if not (j in leave_cols) :
d.delete(j)
#d.delete( tuple of col_name )
#trans to numpy array
original_data = np.empty((n_leave_cols,rows))
for i in range(n_leave_cols):
original_data[i] = d.get(i)
#delete rows which is not change TIME
k = np.zeros(rows-1)
for i in range(rows-1):
j = rows-i-1
if (original_data[0,j] <= original_data[0,j-1] ):
original_data = np.delete(original_data,j,1)
# resamp
def resamp(y):
f = interpolate.interp1d(original_data[0], y, kind='linear')
return f(time_r)
r_data = np.empty((n_leave_cols,n_sampling))
r_data[0] = time_r
r_data[1:] = resamp(original_data[1:])
np.save('rData.npy',r_data)
Es ist möglich, das HSPICE-Simulationsergebnis auf Python mit der Datenklasse von DeCiDa zu lesen.
・ S_sampling, e_sampling Start- und Endzeit der Simulation in Spice. ・ D_sampling Abtastintervall zur Lesezeit.
d = Data() Daten können in d mit d.read_hspice ('xxx.xxx') gespeichert werden. Es gibt auch Methoden, die CSV und NGSpice unterstützen.
Ich denke, es gibt ein Datenarray, das für die Berechnung nicht erforderlich ist. d.delete(col) Kann mit gelöscht werden. col kann als ganzzahliger Wert oder Spaltenname angegeben werden. Sie können mehrere löschen, indem Sie einen Taple übergeben. (Ich hatte die Spaltennamen, die ich dieses Mal behalten musste, also habe ich sie einzeln gelöscht.)
Sie können die Spaltennummer aus dem Spaltennamen mit d.index ("zzz") abrufen.
Es ist unter d.get (col) verfügbar. Es scheint, dass Sie es tun können, ohne den for-Satz zu verwenden ……. Es scheint, dass es in den unnötigen Datenlöscher im obigen Kapitel integriert werden kann ....
Da die Zeitachse der Gewürzdaten nicht gleichmäßig verteilt ist, wird das Resampling mit der Interpolation von SciPy durchgeführt. Wenn die Zeitdaten jedoch beschlagen sind, kann kein Resampling durchgeführt werden, sodass ein Löschen durchgeführt wird.
Dann wurde es linear ergänzt und als Numpy-Daten gespeichert.
Ich erklärte den Code zum Konvertieren des Analogschaltungssimulators und der Python-Daten. Derzeit wird Spice separat gedreht und die Daten werden aus dem Ergebnis gelesen. Da DeCiDa selbst über eine Methode zum Bedienen von Spice verfügt, möchte ich eine Verbesserung der Effizienz in Betracht ziehen.
Recommended Posts