zoukankan      html  css  js  c++  java
  • f(t) = t的傅里叶系数

      计算机网络课程讲到物理层,布置作业的第一题是求f(t)=t (0≤t≤1)的傅里叶系数。

      我们知道任何一个周期函数都可以被傅里叶级数逼近。如果是实值函数,则可以用正弦分量,余弦分量,直流分量来近似。公式如下:$$f(x)=frac{a_0}{2}+sum_{n=1}^{infty}(a_n cosnx+b_n sinnx)$$

      利用正余弦函数的正交性反变换可得到f(x)的系数。本题中认为函数周期是1,进行延拓可以看成是无数个f(t)沿着x轴平移。

      简单计算得$a_0=1$, $a_n=0$, $b_n=-frac{1}{pi n}$ 至此题目结束。

      但是我想练习一下最近自己刚刚接触到的numpy和matplotlib,于是动手写了一个python小程序想看看拟合的效果是什么样的。效果图和代码如下。  

    import numpy as np
    import matplotlib.pyplot as plt
    
    
    x = np.linspace(0, 1, 100)
    y_ = np.zeros_like(x)
    y = x
    y_ = y_ + 0.5
    for n in range(1, 11):
        y_ = y_ - 1/np.pi/n * np.sin(2*np.pi*x*n)
    
    plt.plot(x, y, label='y=x')
    plt.plot(x, y_, label='approximation')
    
    plt.xlabel('x')
    plt.ylabel('y')
    
    plt.title("CFS")
    plt.legend()
    plt.show()
    

      代码一直拟合到十阶分量。可看到效果还是不错的,增加x采样点可以增加图像平滑

  • 相关阅读:
    xx系统需求分析01—用户权限管理(一)
    软件工程第五周总结
    Hbase的常用shell命令+Java操作
    软件需求阅读笔记02
    MyBatis学习总结03-动态SQL
    MyBatis学习总结02
    MyBatis学习总结01
    软件工程第四周总结
    软件需求阅读笔记01
    MapReduce案例-流量统计
  • 原文地址:https://www.cnblogs.com/chester-cs/p/11630383.html
Copyright © 2011-2022 走看看