を実装することはできません私はここで、「構文の簡素化」セクションからscipyのダウンロードスクリプトを実装しようとしています:http://scipy-cookbook.readthedocs.io/items/FittingData.htmlパイソン - scipyのダウンロードフィッティングスクリプトを
私のコードは非常に長いので、私は思われる部分だけを投稿します問題になる
私は、次のエラーメッセージが表示されます。TypeError: unsupported operand type(s) for *: 'int' and 'Parameter'
、私は起こる理由を理解され:return self.amplitude() * np.exp(-1*self.decay_const()*x)
class Plot():
def __init__(self,slice_and_echo,first_plot,right_frame):
self.slice_and_echo = slice_and_echo
self.first_plot = first_plot
self.right_frame = right_frame
self.amplitude = Parameter(1)
self.decay_const = Parameter(1)
def function(self,x):
print(self.amplitude)
print(self.amplitude())
return self.amplitude() * np.exp(-1*self.decay_const()*x)
def create_plot(self):
plot_figure = Figure(figsize=(10,10), dpi=100)
self.the_plot = plot_figure.add_subplot(111)
self.the_plot.plot(self.echoes,self.average,'ro')
print(self.amplitude())
self.fit_parameters = self.fit(self.function,[self.amplitude,self.decay_const],self.average)
print(self.fit_parameters)
def fit(self,function, parameters, y, x=None):
def f(params):
i = 0
for p in parameters:
p.set(params[i])
i += 1
return y - function(x)
if x is None: x = np.arange(y.shape[0])
p = [param for param in parameters]
return optimize.leastsq(f, p)
とパラメータ()クラスは、リンクの場合と同じである:それはこの部分での製品の
class Parameter:
def __init__(self, value):
self.value = value
def set(self, value):
self.value = value
def __call__(self):
return self.value
問題は、私はcreate_plot(self):
メソッドの内部でself.amplitude()
を呼び出すときに、それが返す値が整数である、ということのようです(私が欲しいものです!)。しかし、私がfunction(self,x)
メソッドの中で呼び出すと、それは起こりません。このメソッドの中で印刷すると、整数の代わりに<__main__.Parameter object at 0x1162845c0>
が得られます。
同じクラスの異なるメソッドから呼び出されたときに異なる値が返されるのはなぜですか?私はここで何が欠けていますか?
ありがとうございました!
よく知られている方程式に気付くことはできませんでした。私はずっと前から光子エコー減衰曲線を使っていましたので、このコードのいくつかが参考になるかもしれません:減衰曲線にフィット:https://github.com/9dogs/edp/blob/1b9d6629922db404ed397e150f9d1482be0b376e/main.py#L474フィットピークカーブ: https://github.com/9dogs/edp/blob/1b9d6629922db404ed397e150f9d1482be0b376e/fitting/fit.py#L41 – 9dogs
ありがとうございます。私はそれを実装するために多くのことを試して、おそらくかっこをある時点で戻すのを忘れていました。 コードをありがとう!私はそれを見てみましょう! –
私はlmfitを実装することができました!ありがとう!しかし、1つの質問:パラメータを抽出し、フィッティング曲線を作成する必要がありますか?または、最小化メソッドの出力からカーブを抽出できますか? –