在while循环中读取数据

时间:2018-02-09 17:39:19

标签: python python-3.x for-loop while-loop

我不确定我是否遗漏了我在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次时,间距越来越大,图形越来越远。我该如何解决这个错误?

distorted graphs

0 个答案:

没有答案