python 傅里叶曲线拟合
先看一段效果
代码结构
- 拟合曲线的方程
- 将原始数据和拟合结果绘制到一张图上,并保存
- 图片合成视频
import 部分说明
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np
import sys
import os
拟合方程如下
def fourier(x, *args):w = 2 * np.pi / 200ret = 0for deg in range(0, int(len(args) / 2) + 1):ret += args[deg] * np.cos(deg * w * x) + args[len(args) - deg - 1] * np.sin(deg * w * x)return ret
绘制并保存
def main(x, y, n, targetroot='', **kwargs):try:popt, proc= curve_fit(fourier, x, y, [1.0] * kwargs.get('poptcount',int(n / x.shape[0] * 100 + 5)))except Exception as e:print(e)returnplt.xlim(np.min(x) - np.abs(np.min(x) * 0.1), np.max(x) + np.abs(np.max(x) * 0.1))plt.ylim(np.min(y) - np.abs(np.min(y) * 0.1), np.max(y) + np.abs(np.max(y) * 0.1))# 极坐标# ax = plt.subplot(111, projection='polar')# ax.plot(x, y, color='r', label="original")# ax.plot(x, fourier(x, *popt), color='g', label='fitting-{n}'.format(n=n))# 默认坐标展示plt.plot(x, y, color='r', label='original')plt.plot(x, fourier(y, *poptY), color='g', label='fitting-{n}'.format(n=n))plt.legend()# 这里的n 是为生成多张图片做准备的,要生成视频中的效果,这里的n需要和x,y的数据做裁剪plt.savefig('{targetroot}/curve_result/{n}.jpg'.format(targetroot=targetroot, n=n - 5))plt.clf()return poptX,poptY
图片生成视频
参考opencv2
def img2video(imgroot, savepath, **kwargs):fps = kwargs.get('fps', 25)fourcc = cv2.VideoWriter_fourcc(*'mp4v')video_writer = cv2.VideoWriter(savepath, fourcc, fps, (640*2, 720))for r, d, fs in os.walk(imgroot):for f in range(1,len(fs)+10):imgname = ''.join([r, '/', str(f), '.jpg'])print(imgname)if not os.path.exists(imgname):continueframe = cv2.resize(cv2.imread(imgname), (640*2, 720))video_writer.write(frame)video_writer.release()
加入音频
使用pymovie
def covert_video_from_audio(fvideo, faudio, target):"""将音视频混合/替换原有音频:param fvideo::param faudio::param target::return:"""with mpy.VideoFileClip(fvideo) as objvideo:with mpy.AudioFileClip(faudio) as objaudio:if (objaudio.duration <= objvideo.duration):objvideo.audio = objaudio.subclip(0, objvideo.duration)else:objvideo.audio = objaudioobjvideo.write_videofile(target)return target
总结
将上述代码依次拼接,即可生成视频中的效果~
python 傅里叶曲线拟合相关推荐
- python拟合曲线的方式,Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】...
本文实例讲述了Python实现曲线拟合操作.分享给大家供大家参考,具体如下: 这两天学习了用python来拟合曲线. 一.环境配置 本人比较比较懒,所以下载的全部是exe文件来安装,安装按照顺利来安装 ...
- python傅里叶函数图像_python实现傅里叶级数展开的实现
傅立叶级数的介绍我就不说了,自己也是应用为主,之前一直觉得很难懂,但最近通过自己编程实现了一些函数的傅立叶级数展开之后对傅立叶 级数展开的概念比较清楚了 (1)函数如下 函数图象如下: 代码: fro ...
- python曲线拟合预测_用python做曲线拟合
大家好?我是Kepler哎学习,最近在工程中用到曲线拟合.一般我们都是用matlab来做,方便快捷.我们也可以尝试用python编写脚本来拟合数据,方便数据自动化处理. 曲线拟合分为一般多项式拟合和指 ...
- Python函数曲线拟合
本文的目的:完后对一些实验数据点的曲线拟合 直接上代码 import matplotlib.pyplot as plt import numpy as np# 输入x轴数据(自变量) x = [8.5 ...
- 利用Python进行曲线拟合
曲线拟合 参考博客:http://lijin-thu.github.io/04.%20scipy/04.04%20curve%20fitting.html 最小二乘多项式拟合 寻找一个曲线满足y=f( ...
- [Python] 多项式曲线拟合(Polynomial Curve Fitting)
多项式曲线拟合 Polynomial Curve Fitting 实验目标 实现过程 - Step 1 :生成观测集和目标函数 - Step 2 :比较不同阶数多项式的拟合效果 - Step 3 :通 ...
- python傅里叶逆变换_OpenCV-Python系列之傅里叶变换
傅里叶变换 我们生活在时间的世界中,早上7:00起来吃早饭,8:00去挤地铁,9:00开始上班...以时间为参照就是时域分析. 但是在频域中一切都是静止的!可能有些人无法理解,我建议大家看看这个文章, ...
- python 三维曲线拟合_python实现三维拟合的方法
如下所示: from matplotlib import pyplot as plt import numpy as np from mpl_toolkits.mplot3d import axes3 ...
- python傅里叶逆变换_C# 傅里叶变换 逆变换 调用MathNet包|简明python教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 上司给我讲采样率,我觉得自己有点钻牛角尖了,想来想去还是不明白. 因为说的是日语,サンプリング周波数,我就 ...
最新文章
- jBPM专家力作——《深入浅出jBPM》
- 23、Java Swing JTree:树组件
- slickgrid 中ajax,slickgrid.js 一种高性能web数据表格组件的探讨
- Spring Boot 几条最佳实践!
- Spring–添加AOP支持
- 手动制作python安装模块
- php自动安装myqsl,php – 在自制的小牛上安装MySQL麻烦
- AI如何变革家居软装?拍图就能搜商品,深度学习平台飞桨新玩法
- 参数编码 完全解决方案 (转)
- 推荐!手把手教你使用Git(转)
- 软考-中级软件设计师电子资料合集
- OpenGL Qt环境配置
- EPLAN教程——工具栏详解(2)默认工具栏
- 软件设计与体系结构实验——图书馆管理系统
- 7段数码管驱动电路设计
- 【报名开启】2021年博客之星总评选,属于你的年终表彰
- 「Cold Chain 2015国际冷链物流展」
- 《数据结构与算法》课程设计:18-背包问题
- 2019最全前端面试问题及答案总结
- 【科创人】悦跑圈CTO钱荣明:创业成瘾,识人为先