Свертка с астропией - PullRequest
       9

Свертка с астропией

2 голосов
/ 07 ноября 2019

У меня проблемы с пониманием того, как свертка двух моделей делается в астропии. Я хочу свернуть мою функцию, центрированную вокруг определенного значения x, с гауссианой со средним значением 0 и сигмой> 0. Однако, когда я пытаюсь построить результат свертки, функция центрируется вокруг ~ x / 2. Я думаю, что мне здесь не хватает чего-то фундаментального, но я не смог найти ничего, кроме основного примера по документам по астропии.

Вот мой фрагмент кода:

import numpy as np
import math
import matplotlib.pyplot as plt

from astropy.modeling.models import custom_model
from astropy.modeling import models
from astropy.convolution import convolve_models

from scipy.constants import alpha


@custom_model
def spectrum(x):
   me = 0.511
   eMax = 104.97

   E = np.sqrt(x*x + me*me)
   result = (1./eMax)*(alpha/(2*math.pi))*(np.log(4*E*E/me/me)-2.)*((E*E+eMax*eMax)/eMax/(eMax-E))

   result[result < 0] = 0
   return result

x = np.linspace(0,120,1000)
s = spectrum()
g1 = models.Gaussian1D(1, 0, 2)
conv = convolve_models(g1, s)

plt.plot(x, conv(x), 'k-')
plt.plot(x, s(x))

Я ожидаю, что извилистая функция будет сосредоточена вокруг исходной, не думаю, что понимаю, что происходит.

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...