首页 > 解决方案 > 将多项式拟合到 35 阶数据

问题描述

我有 3 个数据文件;波长/像素、计数/像素和背景/像素。每个数据文件有多个订单(订单总数 = 35)。我需要将多项式拟合到背景/像素的每个顺序,然后计算每个顺序的计数/背景并绘制波长-vs-计数/背景。这是我到目前为止所做的


import numpy as np
import matplotlib.pyplot as plt
from astropy.io import fits

# Load and open FITS files
counts_image = ("counts.fits")
wavelength_image = ("wavelength.fits")
background_image = ("backgound.fits")

sp = fits.open(counts_image)
sp_w = fits.open(wavelength_image)
sp_b = fits.open(background_image)

# Array data
counts = np.array(sp[0].data)
wave = np.array(sp_w[0].data)
background = np.array(sp_b[0].data)

# Perform fit for each order number (0-34)
order_number = 27 

# 4th order polynomial
coeffs = np.polyfit(wave[order_number],backgound[order_number], deg=4)
poly = np.poly1d(coeffs)
yp = np.polyval(poly,wave[order_number])
plt.plot(wave[order_number],yp)

# Counts/background fit
counts_fit = counts[order_number]/yp

# Plotting
plt.figure()
plt.plot(wave[order_number],counts_fit)

现在这适用于一个订单号。我怎样才能扩展订单以适应所有 35 个订单产生一个单一的情节?我是 python 新手,所以任何帮助和建议将不胜感激。

谢谢你。

标签: pythonnumpymatplotlibfits

解决方案


推荐阅读