首页 > 其他分享 >通过傅里叶级数拟合曲线

通过傅里叶级数拟合曲线

时间:2024-07-10 13:09:52浏览次数:4  
标签:02 03 plt 级数 Ua 拟合 np fourier 傅里叶

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

filename='test.txt'

# fourier series defintions
tau = 0.045
def fourier(x,*a):
    ret=a[0]*np.cos(np.pi/tau*x)
    for deg in range(1,len(a)):
        ret+=a[deg]*np.cos((deg+1)*np.pi/tau*x)
    return ret

z, Ua = np.loadtxt(filename,delimiter=',', unpack=True)

# plot data
fig = plt.figure()
ax1 = fig.add_subplot(111)
p1, = plt.plot(z,Ua,label='src')

# fits
popt, pcov = curve_fit(fourier, z, Ua,[1.0]*8)

# further plots
Ua_fit8 = fourier(z,*popt)
Ua_fit1 = fourier(z,popt[0])
p2, = plt.plot(z,Ua_fit8,label='8')
p3, = plt.plot(z,Ua_fit1,label='1')
plt.legend()

plt.show()

test.txt里的数据:

1.000000000000000021e-03,2.794682735905079767e+02
2.000000000000000042e-03,2.792294526290349950e+02
2.999999999999999629e-03,2.779794770690260179e+02
4.000000000000000083e-03,2.757183469104809888e+02
5.000000000000000104e-03,2.734572167519349932e+02
5.999999999999999258e-03,2.711960865933900209e+02
7.000000000000000146e-03,2.689349564348440254e+02
8.000000000000000167e-03,2.714324329982829909e+02
8.999999999999999320e-03,2.739299095617229796e+02
1.000000000000000021e-02,2.764273861251620019e+02
1.100000000000000110e-02,2.789248626886010243e+02
1.199999999999999852e-02,2.799669443683339978e+02
1.299999999999999940e-02,2.795536311643609793e+02
1.400000000000000029e-02,2.791403179603880176e+02
1.499999999999999944e-02,2.787270047564149991e+02
1.600000000000000033e-02,2.783136915524419805e+02
1.699999999999999775e-02,2.673604939531239779e+02
1.799999999999999864e-02,2.564072963538059753e+02
1.899999999999999953e-02,2.454540987544889958e+02
2.000000000000000042e-02,2.345009011551709932e+02
2.099999999999999784e-02,1.781413355804160119e+02
2.200000000000000219e-02,7.637540203022649621e+01
2.299999999999999961e-02,-2.539053151996269975e+01
2.399999999999999703e-02,-1.271564650701519952e+02
2.500000000000000139e-02,-2.289223986203409993e+02
2.599999999999999881e-02,-2.399383538664330047e+02
2.700000000000000316e-02,-2.509543091125239869e+02
2.800000000000000058e-02,-2.619702643586149975e+02
2.899999999999999800e-02,-2.729862196047059797e+02
2.999999999999999889e-02,-2.786861050144170235e+02
3.099999999999999978e-02,-2.790699205877460258e+02
3.200000000000000067e-02,-2.794537361610759945e+02
3.300000000000000155e-02,-2.798375517344049968e+02
3.399999999999999550e-02,-2.802213673077350222e+02
3.500000000000000333e-02,-2.776516459805940258e+02
3.599999999999999728e-02,-2.750819246534539957e+02
3.700000000000000511e-02,-2.725122033263129993e+02
3.799999999999999906e-02,-2.699424819991720028e+02
3.899999999999999994e-02,-2.698567311502329744e+02
4.000000000000000083e-02,-2.722549507794930150e+02
4.100000000000000172e-02,-2.746531704087540220e+02
4.199999999999999567e-02,-2.770513900380149721e+02
4.299999999999999656e-02,-2.794496096672759791e+02
4.400000000000000439e-02,-2.800761105821779893e+02
4.499999999999999833e-02,-2.800761105821779893e+02
4.599999999999999922e-02,-2.800761105821779893e+02
4.700000000000000011e-02,-2.800761105821779893e+02
4.799999999999999406e-02,-2.788333722531979788e+02
4.900000000000000189e-02,-2.763478955952380147e+02
5.000000000000000278e-02,-2.738624189372779938e+02
5.100000000000000366e-02,-2.713769422793179729e+02
5.199999999999999761e-02,-2.688914656213580088e+02
5.299999999999999850e-02,-2.715383673199499981e+02
5.400000000000000633e-02,-2.741852690185419874e+02
5.499999999999999334e-02,-2.768321707171339767e+02
5.600000000000000117e-02,-2.794790724157260229e+02
5.700000000000000205e-02,-2.804776351435970128e+02
5.799999999999999600e-02,-2.798278589007459800e+02
5.899999999999999689e-02,-2.791780826578950041e+02
5.999999999999999778e-02,-2.785283064150449945e+02
6.100000000000000561e-02,-2.778785301721940186e+02
6.199999999999999956e-02,-2.670252067497989970e+02
6.300000000000000044e-02,-2.561718833274049985e+02
6.400000000000000133e-02,-2.453185599050100052e+02
6.500000000000000222e-02,-2.344652364826150119e+02
6.600000000000000311e-02,-1.780224826854309867e+02
6.700000000000000400e-02,-7.599029851345700592e+01
6.799999999999999101e-02,2.604188565851649884e+01
6.900000000000000577e-02,1.280740698304900036e+02
7.000000000000000666e-02,2.301062540024639986e+02
7.100000000000000755e-02,2.404921248105050040e+02
7.199999999999999456e-02,2.508779956185460094e+02
7.299999999999999545e-02,2.612638664265870148e+02
7.400000000000001021e-02,2.716497372346279917e+02
7.499999999999999722e-02,2.773051723900500178e+02
7.599999999999999811e-02,2.782301718928520131e+02
7.699999999999999900e-02,2.791551713956549747e+02
7.799999999999999989e-02,2.800801708984579932e+02
7.900000000000001465e-02,2.810051704012610116e+02
8.000000000000000167e-02,2.785107135689390248e+02
8.099999999999998868e-02,2.760162567366169810e+02
8.200000000000000344e-02,2.735217999042949941e+02
8.300000000000000433e-02,2.710273430719730072e+02
8.399999999999999134e-02,2.706544464035359852e+02
8.500000000000000611e-02,2.724031098989830184e+02
8.599999999999999312e-02,2.741517733944299948e+02
8.699999999999999400e-02,2.759004368898779944e+02
8.800000000000000877e-02,2.776491003853250277e+02
8.899999999999999578e-02,2.783445666445250026e+02
8.999999999999999667e-02,2.790400329037249776e+02

参考链接:python - 动态创建傅里叶级数的 scipy 曲线拟合定义

创建于2407101302,修改于2407101302

标签:02,03,plt,级数,Ua,拟合,np,fourier,傅里叶
From: https://www.cnblogs.com/tellw/p/18293857

相关文章

  • matplotlib绘制拟合大象曲线
    通过十个参数绘制大象曲线importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlib.animationasanimationnum=101k=np.arange(1,6)t=np.linspace(0,2*np.pi,num)Ax=[0,0,12,0,-14]Bx=[50,18,0,0,0]Ay=[-60,0,0,0,0]By=[-30,8,-10,0,0]eye=20x=(np......
  • 集合幂级数
    集合幂级数从\(2^U\rightarrowR\)​的映射加法乘法\(h=f\cdotg=\sum\limits_{L\in2^U}\sum\limits_{R\in2^U}f_Lg_Rx^{L\oplusR}\)类比乘法,其中\(\oplus\)​需要满足交换律,结合律高维前缀和的dp解释设\(f_{S,i}\)表示考虑\(S\)的子集的后\(i\)位,前\(|S|-i......
  • 离散傅里叶变换(DFT)和快速傅里叶变换(FFT)
    离散傅里叶变换(DFT)和快速傅里叶变换(FFT)是信号处理和数字信号处理中的基本工具。它们用于将时间域的信号转换为频率域的表示,帮助分析信号的频谱成分。1.离散傅里叶变换(DFT)1.1DFT的基本概念DFT是将离散时间信号转换为频域表示的工具。对于长度为N的离散信号x[n],其DFT定义为:......
  • 快速傅里叶变换复习笔记
    .real()成员函数FFT的本质是快速计算多项式的点值表示对负实数的四舍五入需要-0.5编写函数接收数组地址时,注意不能破坏原数组FFT有较为严重的精度问题,double甚至难以准确计算两个\(10^9\)级别的整数相乘的结果,即使采用longdouble也时常无法得到准确的答案,这或许也是模板题中......
  • Python实战训练(方程与拟合曲线)
    1.方程求e^x-派(3.14)的解用二分法来求解,先简单算出解所在的区间,然后用迭代法求逼近解,一般不能得到精准的解,所以设置一个能满足自己进度的标准来判断解是否满足这里打印出解x0是因为在递归过程中没有变量去接收返回值,所以返回x0,再打印x0得到的是None,再用numpy自带的log(pi)就查......
  • MATLAB神经网络拟合工具的使用
     本文以MATLABR2022a为例,介绍使用软件自带的神经网络拟合工具箱。首先,准备好需要分析的数据,包括预测变量、响应,在试验分析中分别对应试验因素、试验结果。每一组预测变量均对应一个响应,试验中一组试验因素对应一个试验结果。预测变量的数量、响应的数量分别对应神经网络中的......
  • 中山市选 #E 参数拟合
    中山市选#E参数拟合题目大意有两个长度为\(n\)的序列\(A,B\)。现在给出你\(m\)种操作,\((u,v)\)表示你可以将\(A_u,A_v\)同时增加\(q\)为任意整数。最后需要使得\(\sum(A_i-B_i)^2\)最小。解题思路首先,我们令\(C_i=A_i-B_i\)这样我们的目标就是使得\(\s......
  • 【深度学习】图形模型基础(5):线性回归模型第三部分:线性回归模型拟合
    1.引言本博文专辑的焦点主要集中在回归模型的实用案例和工具上,从简单的单变量线性回归入手,逐步过渡到包含多个预测变量、非线性模型,以及在预测和因果推断中的应用。本文我们将介绍回归模型推断的一些数学结构,并提供一些代数知识以帮助理解线性回归的估计方法。此外,我们还将......
  • 【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量
            ......
  • 七年级数学——有理数的基本概念(一)
    一.相反意义的量1.相反意义比如:海拔8848千米,海拔-340千米;向南走60米,向北走-100米。2.正数负数正数:0负数:00既不是负数也不是正数3.有理数正数和分数统称为有理数4.有理数的分类(1)按定义分(2)按符号分5.小数和分数......