python图像处理(三)波形叠加模拟

1.3D一维函数模拟
1.1.原理
利用一维傅里叶级数展开公式:
在这里插入图片描述

设置T=2π,Amax=1,也就有:
f(t) ~ 4/π(sin(t) + 1/3sin(3t) + 1/5sin(5t) +…)

1.2.python函数模拟一维函数叠加

from mpl_toolkits.mplot3d import axes3d
import cv2
import numpy as np
import matplotlib.pyplot as plt

##画3d分段函数


x=np.linspace(0,2*np.pi,100)
seg1=[1 if (i<np.pi) else 0 for i in x]
seg2=[1 if (i>=np.pi) else 0 for i in x]
y=np.linspace(0,0,100)
z=1*seg1+0*seg2

#用三个波的叠加模拟阶梯函数,也可以说是阶梯函数分解的前三个波

y1=np.linspace(1,1,100)
z1=4/np.pi*np.sin(x) #第一个波

y2=np.linspace(2,2,100)
z2=z1+4/(3*np.pi)*np.sin(3*x) #第二个波

y3=np.linspace(3,3,100)
z3=z2+4/(5*np.pi)*np.sin(5*x) #第三个波

fig=plt.figure();
ax=fig.gca(projection='3d')
ax.plot(x,y,z,label='z=1 (0<x<pi) \nz=0 (pi<x<2*pi)')
ax.plot(x,y1,z1,label='z=4/np.pi*np.sin(x)')
ax.plot(x,y2,z2,label='z=4/np.pi*np.sin(x)+4/(3*np.pi)*np.sin(3*x)')
ax.plot(x,y3,z3,label='z=4/np.pi*np.sin(x)+4/(3*np.pi)*np.sin(3*x)+4/(5*np.pi)*np.sin(5*x)')
ax.legend()
plt.show()
cv2.waitKey(0)

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值