0
所以我有這個lmfit代碼:如何處理生成的變量。不能傳遞給一個表達
fit_params = Parameters()
for iy, y in enumerate(data):
fit_params.add('mean1_%i' % (iy+1), value=10.0, min=0.0, max=50.0)
fit_params.add('mean2_%i' % (iy+1), value=40.0, min=0.0, max=50.0)
fit_params.add('A1_%i' % (iy+1), value=28500.0, min=25000.0, max=33000.0)
fit_params.add('A2_%i' % (iy+1), value=28500.0, min=25000.0, max=33000.0)
fit_params.add('sd1_%i' % (iy+1), value=15.0, min=7.0, max=23.0)
fit_params.add('sd2_%i' % (iy+1), value=15.0, min=7.0, max=23.0)
fit_params.add('y0_%i' % (iy+1), value=1000.0, min=300.0, max=1500.0)
for iy in range(2, data_sets+1):
#fit_params['mean2_%i' % iy].expr='mean2_1'
fit_params['sd1_%i' % iy].expr='???'
這些參數實時生成。我想爲每個sd1_n和sd2_n添加一個表達式,sd1 < sd2。我的變量有
...%i' % iy
部分,我不知道如何處理它們。如果變量werent生成,我只能輸入:
fit_params['sd1_1'].expr='sd1_1<sd2_1'
任何幫助如何處理生成的變量並傳遞它們會很好。 文件隻字未提它http://cars9.uchicago.edu/software/python/lmfit/constraints.html
迭代通過fit_params直到你找到符合你的標準,然後添加表達式給它的參數。匹配不應該太難,看起來你可以對前三個字符使用切片 - '''key [:3] =='sd1_'''' – wwii 2014-10-20 10:29:57