БПФ Уэлч с посадкой по кривой Лоренца - PullRequest
0 голосов
/ 29 мая 2018

Итак, у меня есть эта кривая Лоренца, подходящая для моих данных, но я заметил странную мелочь и ищу ответ.Может быть, вы можете помочь.

Это мои данные, как вы можете видеть, я взял scaling='density', но когда я беру spectrum, мой код делает некоторые странные вещи.

for dataset in [Bxfft]:
    dataset = np.asarray(dataset)
    freqs, psd = signal.welch(dataset, fs=266336/300, window='hamming', nperseg=16192, scaling='density')
    plt.semilogy(freqs[30:-7000], psd[30:-7000]/dataset.size**0, color='r', label='Bx')
    x = freqs[100:-7900]
    y = psd[100:-7900]

Здесьмоя модель для подгонки кривой:

Итак, этот код идет из первой черной линии (изогнутой):

model = Model(lorentzian)
params = model.make_params(amp=6, cen=5, sig=1)
result = model.fit(y, params, x=x)
final_fit = result.best_fit
print(result.fit_report(min_correl=0.25))
plt.plot(x, final_fit, 'k-', linewidth=2)

И это касается второй черной линии (верхний график изогнут, нижнийграфик прямой):

# 14 Hz
x2 = freqs[200:-7800]
y2 = psd[200:-7800]

model2 = Model(lorentzian)
pars2 = model2.make_params(amp=6, cen=5, sig=1)
pars2['amp'].value = 6
result2 = model2.fit(y2, pars2, x=x2)
final_fit2 = result2.best_fit
print(result2.fit_report(min_correl=0.25))
plt.plot(x2, final_fit2, 'k-', linewidth=2)

Проверьте участок.Есть ли у вас какие-либо идеи?Резюмируя мой вопрос, вы понимаете, почему все нормально (верхний график), когда я использую density, и почему, когда я использую spectrum, некоторые из моих данных взламываются?enter image description here

1 Ответ

0 голосов
/ 30 мая 2018

Поскольку амплитуды разные, возможно, это связано с начальными значениями параметров.Обратите внимание, что spectrum и density должны иметь разные единицы (см. Документацию) ... Ваши данные слишком шумные, чтобы сделать простой оконный FFT?

...