Skip to content
Snippets Groups Projects
Unverified Commit 6d36a331 authored by Recolic Keghart's avatar Recolic Keghart
Browse files

fix va.

parent 9c820810
No related branches found
No related tags found
No related merge requests found
...@@ -173,4 +173,4 @@ def DataFileToXYArray(fname, lineDelimiter = '\n', wordDelimiter = ' ', commentS ...@@ -173,4 +173,4 @@ def DataFileToXYArray(fname, lineDelimiter = '\n', wordDelimiter = ' ', commentS
yArray.append(_DataType(ar[1])) yArray.append(_DataType(ar[1]))
except: except:
print('At data line "{}":'.format(ori_line)) print('At data line "{}":'.format(ori_line))
return xArray, yArray return xArray, yArray
\ No newline at end of file
No preview for this file type
#!/bin/env python3
# -*- coding: UTF-8 -*-
# Gereric: Draw line.
# Recolic Keghart, Apr 29, 2017.
import numpy
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
from matplotlib import rcParams
def GetMap(parrX, parrY, windowX = 12, windowY = 8, line = False, passO = False):
print('This quickmap.py is deleted becaused of out of date!!!')
arrX, arrY = parrX, parrY
maxX, maxY = max(arrX)*1.2, max(arrY)*1.25
# Do calculate
# y = k x + b (I = k V + b)
print('Your input: ', arrX, '|', arrY)
print('Data collection done. Generating result...')
V, I = numpy.array(arrX), numpy.array(arrY)
def lineFunc(kb, v):
k,b=kb
if passO:
return k*v
else:
return k*v+b
lossFunc = lambda kb, v, i : lineFunc(kb, v) - i
# Fire!
if line:
kb0 = [10,0]
kbFinal = leastsq(lossFunc, kb0, args=(V, I))
k,b=kbFinal[0]
print('Fit line done. Y=', k, 'X +', b)
else:
print('Drawing map without fitting a line...')
# Draw function map.
rcParams['grid.linestyle']='-'
rcParams['grid.color'] = 'blue'
rcParams['grid.linewidth'] = 0.2
plt.figure(figsize=(windowX, windowY))
plt.scatter(V,I,color="red",label="Sample Point",linewidth=3)
if line:
px=numpy.linspace(0,maxX,1000)
py=k*px+b
plt.plot(px,py,color="orange",label="Fitting Line",linewidth=2)
plt.legend()
plt.grid()
plt.show()
def toFloat(sstr):
if sstr == '':
return 0.0
else:
return float(sstr)
#!/bin/env python3 #!/bin/env python3
import numpy import numpy
import sys import sys
from quickmap import GetMap as draw sys.path.append('..')
from quickmap import *
print('Usage: python va.py path/va-dat.in <Voltmeter range(V)> <Ammeter range(mA)> <fit line>') print('Usage: python va.py path/va-dat.in <Voltmeter range(V)> <Ammeter range(mA)> <fit line>')
print('Example: python3 va.py va-dat.in 1 15 true') print('Example: python3 va.py va-dat.in 1 15 true')
...@@ -10,6 +12,6 @@ Uraw,Iraw=dat[:,0],dat[:,1] ...@@ -10,6 +12,6 @@ Uraw,Iraw=dat[:,0],dat[:,1]
U=[utrue/100*float(sys.argv[2]) for utrue in Uraw] U=[utrue/100*float(sys.argv[2]) for utrue in Uraw]
I=[itrue/150*float(sys.argv[3]) for itrue in Iraw] I=[itrue/150*float(sys.argv[3]) for itrue in Iraw]
if sys.argv[4] == 'true': if sys.argv[4] == 'true':
draw(U,I,6,4,line=True,passO=True) GetMap(U,I,polyLine=True,poly_passO=True)
else: else:
draw(U,I,6,4) GetMap(U,I)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment