def call_spec():
global y,NFFT,Fsamp,Fcentre,foverlap,detrend,_window, _type, fmod, chan_name, diag_name
print len(y), NFFT,foverlap, _type, fmod
ax = pl.subplot(111)
z=_window(y)
if _type=='F':
shot=callback.get_shot()
print("shot=%d") % shot
data = device.acq.getdata(shot, diag_name)
if chan_name=='':
try:
ch=data.channels
print("Choosing from", [chn.name for chn in ch])
name=ch[channel_number].name
except:
print "Failed to open channel database - try mirnov_1_8"
name='mirnov_1_8'
name='mirnov_linear_2'
else:
name=chan_name
# data = pyfusion.load_channel(shot,name)
# data = pyfusion.acq.getdata(shot_number, diag_name)
if data==None: return(False)
if _window==local_none: windowfn=pl.window_none
# else: windowfn=pl.window_hanning
elif _window==local_hanning: windowfn=pl.window_hanning
else: windowfn=_window(arange(NFFT))
clim=(-60,20) # eventually make this adjustable
# colorbar commented out because it keeps adding itself
data.plot_spectrogram(NFFT=NFFT, windowfn=windowfn, noverlap=foverlap*NFFT,
channel_number=channel_number)
# colorbar=True, clim=clim)
# colorbar() # used to come up on a separate page, fixed, but a little clunky - leave for now
return(True)
elif _type == 'T':
# some matplotlib versions don't know about Fc
pl.specgram(z*y, NFFT=NFFT, Fs=Fsamp, detrend=detrend,
# window = _window
noverlap=foverlap*NFFT, cmap=cmap)
elif _type == 'L':
pl.plot(20*log10(abs(fft.fft(y*z))))
elif _type == 'W':
pl.plot(z)
elif _type =='C':
pl.plot(hold=0)
else: raise ' unknown plot type "' + _type +'"'
# pl.show()
# ------ END of call_spec
评论列表
文章目录