我不确定我是否遗漏了我在Python上仍然陌生的东西,但我正在阅读一个文件夹中的很多Matlab文件。在每个matlab文件中,有多个数组,我可以对每个数组执行操作,如绘图,并找到平均值,最大最小值等。我的代码工作正常,并正确读取数据。现在,我想添加一个while循环,以便它可以继续运行,直到我告诉它停止,这意味着排队用户继续选择需要读取数据的文件夹。但是,当我第二次运行它时,它会给我这个错误TypeError: 'list' object is not callable
如果我错了,请纠正我,但我觉得代码正在做的是将下一组数据添加到程序的整体数据中。这就是为什么它在这一行maxGF=max(GainF)
时给我一个错误。因为它变成了一个数组数组......而且它不能占用最大值。
当我从每个matlab文件加载数据时,我就这样做了:
Files=[] #list of files
for s in os.listdir(filename):
Files.append(scipy.io.loadmat(filename+s))
for filenumber in range(0,length):
#Gets information from MATLAB file and inserts it into array
results[filenumber]=Files[filenumber]['results']
#Paramaters within MATLAB
Gain_loading[filenumber]=results[filenumber]['PowerDomain'][0,0]['Gain'][0,0] #gets length of data within data array
length_of_data_array=len(Gain_loading[filenumber])
Gain[filenumber]=np.reshape(results[filenumber]['PowerDomain'][0,0]['Gain'][0,0],length_of_data_array) #reshapes for graphing purposes
PL_f0_dBm[filenumber]=np.reshape(results[filenumber]['PowerDomain'][0,0]['PL_f0_dBm'][0,0],length_of_data_array)
Pavs_dBm[filenumber]=np.reshape(results[filenumber]['PowerDomain'][0,0]['Pavs_dBm'][0,0],length_of_data_array)
PL_f0[filenumber]=np.reshape(results[filenumber]['PowerDomain'][0,0]['PL_f0'][0,0],length_of_data_array)
PL_2f0_dBm[filenumber]=np.reshape(results[filenumber]['PowerDomain'][0,0]['PL_2f0_dBm'][0,0],length_of_data_array)
CarrierFrequency[filenumber]=np.reshape(results[filenumber]['MeasurementParameters'][0,0]['CarrierFrequency'][0,0],length_of_data_array)
Gamma_In[filenumber]=np.reshape(abs(results[filenumber]['PowerDomain'][0,0]['Gin_f0'][0,0]),length_of_data_array)
Delta[filenumber]=PL_2f0_dBm[filenumber]-PL_f0_dBm[filenumber]
当我开始使用下面的数据时,它可以工作,并且在我运行max(GainF)命令之前显示正确的数据。
GainF=[None]*length
MaxPL_Gain=[None]*length
#finds highest value of PL @ each frequency
for c in range(0,length):
MaxPL_Gain[c]=max(PL_f0_dBm[c])
MaxPL_Gain[:]=[x-6 for x in MaxPL_Gain] #subtracts 6dB from highest PL Values @ each frequency
for c in range (0,length):
GainF[c]=np.interp(MaxPL_Gain[c],PL_f0_dBm[c],Gain[c]) #interpolates PL vs Gain. Finds value of Gain at 6dB backoff form max PL
maxGF=max(GainF)
我读了其他说使用seek(0)函数的线程。我尝试使用Files.seek(0),因为这是我最初保存所有数据的地方,但是当我运行它时,它给了我同样的错误:AttributeError: 'list' object has no attribute 'seek'
如何重置所有数据?帮助
更新: 我尝试了以下代码
for name in dir():
if not name.startswith('_'):
del globals()[name]
它按照我想要的方式工作......或者我认为。当我看到从程序中输出的PDF时,我得到了扭曲的情节。看起来最后一个程序的轴仍然在pdfs中。不仅如此,当我运行4-5次时,间距越来越大,图形越来越远。我该如何解决这个错误?