信号与系统(Python) 学习笔记摘录 (1) 信号简介 Intro


1. Introduction

1.1. 周期信号

  • Period Signal

1.1.1. 连续信号周期

  • 连续周期信号 f ( t ) f(t) , 周期为 T T , 满足
    f ( t ) = f ( t + m T ) ,   m = 0 , ± 1 , ± 2 , f(t) = f(t + mT), \ m = 0, \pm 1, \pm 2, \dots
    • 典型周期连续信号: 余弦信号 cos ω t \cos \omega t 周期为 T = 2 π ω ( s ) T = \frac{2\pi}{\omega}(s)

1.1.2. 离散信号周期

  • 离散周期信号 f ( k ) f(k) , 周期为 N N , 满足
    f ( k ) = f ( k + m N ) ,   m = 0 , ± 1 , ± 2 , f(k) = f(k +mN), \ m = 0, \pm 1, \pm 2, \dots

1.1.3. 信号的 Python 表示与绘图

  • 连续信号 f ( t ) = 5 e 0.8 t sin ( π t ) , 0 < t < 5 f(t) = 5 e^{-0.8t} \sin(\pi t), \, 0<t<5 绘图
    # 导入 需要的 library 库  
    import numpy as np # 科学计算
    import matplotlib.pyplot as plt # 画图
    import scipy.signal as sg # 导入 scipy 的 signal 库 命名为 sg

    a,b = 0.8,5
    t = np.linspace(0,5,100) # 另一种表达式 t = np.mgrid[0:5:0.01]
    y = b*np.exp(-a*t)*np.sin(np.pi*t)
    plt.xlabel('time')
    plt.ylabel('Y')
    plt.plot(t,y)
    plt.grid(True)
    plt.show()

在这里插入图片描述


1.2. 信号分类

  • 将信号 f ( t ) f(t) 施加于 1 Ω 1 \Omega 电阻上, 所消耗的瞬时功率为 f ( t ) 2 \lvert f(t) \rvert ^2 , 在区间 ( , ) ( -\infty, \infty) 能量平均功率定义为
    E = d e f f ( t ) 2 d t E \overset{def}{=} \int_{-\infty}^\infty \lvert f(t) \rvert ^2 dt
    P = d e f lim T 1 T T / 2 T / 2 f ( t ) 2 d t P \overset{def}{=} \lim_{T \to \infty} \frac{1}{T} \int_{-T/2}^{T/2} \lvert f(t) \rvert ^2 dt

1.2.1. 能量信号

  • 能量有限信号: 信号的能量 E < E < \infty , 简称 能量信号 , 此时 P = 0 P = 0 .
    • 离散: E = k = f ( k ) 2 < E = \displaystyle\sum_{k=-\infty}^{\infty} \lvert f(k) \rvert ^2 < \infty

1.2.2. 功率信号

  • 功率有限信号: 信号的功率 P < P < \infty , 简称 功率信号 , 此时 E = E = \infty .
    • 离散: P = lim N 1 N k = N / 2 N / 2 f ( k ) 2 < P = \displaystyle \lim_{N \to \infty} \frac{1}{N} \sum_{k=-N/2}^{N/2} \lvert f(k) \rvert ^2 < \infty

1.2.3. 因果信号

  • 因果信号: t < 0 ,   f ( t ) = 0 t <0, \ f(t) = 0 的信号
    • 例如: 阶跃信号

1.2.4. 反因果信号

  • 反因果信号: t 0 ,   f ( t ) = 0 t \leq 0, \ f(t) = 0 的信号

1.2.5. 其他类型

  • 一维信号, 多维信号; 实信号,复信号; 左信号, 右信号。。。。。。

1.2.6. Remark

  1. 时限信号为能量信号
  2. 周期信号为功率信号
  3. 非周期信号 可能为能量也可能为功率信号
  4. f ( t ) = e t f(t) = e^t 既不是能量也不是功率信号

1.3. 冲激函数

δ ( x ) = d e f { 0 , x 0 1 , x = 0 \begin{aligned} \delta (x) \overset{def}{=} {\begin{cases} 0 , & x\neq 0 \\ 1 , & x = 0 \end{cases}} \end{aligned}

1.3.1. 单位冲激函数 Dirac delta function

  • 单位冲激函数: 奇异函数, 强度极大, 作用时间极短的物理量的理想化模型
    { δ ( x ) = 0 , x 0 δ ( x ) d x = 1 \begin{aligned} {\begin{cases} \delta (x) = 0 , & x\neq 0 \\ \int_{-\infty}^{\infty} \delta(x) dx = 1 \end{cases}} \end{aligned}
    • aka Dirac delta function
    • 高度无穷大, 宽度无穷小, 面积为 1 的对称窄脉冲

1.3.2. 阶跃函数

  • 阶跃函数:
    ε ( t ) = d e f { 0 , t < 0 1 , t > 0 \varepsilon(t) \overset{def}{=} {\begin{cases} 0, & t<0 \\ 1, & t>0 \end{cases}}
    • 积分: t ε ( τ ) d τ = t ε ( t ) \int_{-\infty}^{t} \varepsilon(\tau)d\tau = t \cdot \varepsilon(t)
    • 与 冲激函数 关联:
      • δ ( t ) = d ε ( t ) d t \delta(t) = \frac{d \varepsilon(t)}{dt}
      • ε ( t ) = t δ ( τ ) d τ \varepsilon(t) = \int_{-\infty}^{t} \delta(\tau) d\tau

1.3.3. 广义函数定义

  • Dirac Delta function 广义函数定义:
    δ ( t ) φ ( t ) d t = φ ( 0 ) \int_{-\infty}^{\infty} \delta(t) \varphi(t)dt = \varphi(0)
    • 冲激函数 δ ( t ) \delta (t) 作用于检验函数 φ ( t ) \varphi (t) 的结果是赋值为 φ ( 0 ) \varphi (0) , 称为 冲激函数的取样性质。
    • 例如:
      • 高斯函数 δ ( t ) = lim b b e π ( b t ) 2 \delta(t) = \lim_{b\to \infty} b e^{-\pi(b\cdot t)^2}
      • 取样函数 δ ( t ) = lim b sin ( b t ) π t \delta(t) = \lim_{b\to \infty} \frac{\sin(bt)}{\pi t}

1.3.4. 取样性质

  • Dirac Delta function 取样性质:
    f ( t ) δ ( t a ) = f ( a ) δ ( t a ) f ( t ) δ ( t ) = f ( 0 ) δ ( t ) f(t) \delta(t-a) = f(a) \delta(t-a) \longrightarrow f(t) \delta(t) = f(0) \delta(t)
    f ( t ) δ ( t a ) d t = f ( a ) f ( t ) δ ( t ) d t = f ( 0 ) \int_{-\infty}^{\infty} f(t) \delta(t-a) dt = f(a) \longrightarrow \int_{-\infty}^{\infty} f(t) \delta(t) dt = f(0)
    • Notice: 积分区间要包含 t = a t=a

1.3.5. 导数

  • Dirac Delta function 导数:
    • 冲激偶 δ ( t ) \delta^\prime (t) :
      f ( t ) δ ( t ) = f ( 0 ) δ ( t ) f ( 0 ) δ ( t ) f(t) \delta^\prime (t) = f(0)\delta^\prime(t) - f^\prime(0)\delta(t)
      f ( t ) δ ( t ) d t = f ( 0 ) \int_{-\infty}^{\infty} f(t) \delta^\prime(t) dt = - f^\prime(0)
      f ( t ) δ ( t a ) d t = f ( a ) \int_{-\infty}^{\infty} f(t) \delta^\prime(t-a) dt = - f^\prime(a)
      f ( t ) δ ( n ) ( t ) d t = ( 1 ) n f ( n ) ( 0 ) \int_{-\infty}^{\infty} f(t) \delta^{(n)}(t) dt = (-1)^nf^{(n)}(0)

1.3.6. 尺度变化

  • Dirac Delta function 尺度变化:
    δ ( a t ) = 1 a δ ( t ) \delta(at) = \frac{1}{\lvert a \rvert} \delta(t)
    δ ( n ) ( a t ) = 1 a 1 a n δ ( n ) ( t ) \delta^{(n)} (at) = \frac{1}{\lvert a \rvert} \frac{1}{a^n} \delta^{(n)}(t)

1.4. LTI 连续系统

f ( t ) LTI (linear time-invariant systems) y ( t ) f(t) \to \text{LTI (linear time-invariant systems)} \to y(t)

1.4.1. 微分方程的经典解法

y ( n ) ( t ) + a n 1 y ( n 1 ) ( t ) + + a 1 y ( 1 ) ( t ) + a 0 y ( t ) = b m f ( m ) ( t ) + b m 1 f ( m 1 ) ( t ) + + b 1 f ( 1 ) ( t ) + b 0 f ( t ) y^{(n)}(t) + a_{n-1}y^{(n-1)}(t)+\dots + a_1y^{(1)}(t) + a_0y(t) \\ = b_mf^{(m)}(t)+b_{m-1}f^{(m-1)}(t) + \dots + b_1f^{(1)}(t) +b_0f(t)

  • 经典解法: y ( t ) = y h ( t ) + y p ( t ) y(t) = y_h(t) + y_p(t)

    • y ( t ) y(t) 完全解
    • y h ( t ) y_h(t) 齐次解 homogeneous solution
    • y p ( t ) y_p(t) 特解
  • 特征根: eigenvalue 特征值
    λ n + a n 1 λ n 1 + + a 0 = 0 λ i ( i = 1 , 2 , , n ) \lambda^n + a_{n-1}\lambda^{n-1} + \dots + a_0 = 0\, \to\, \lambda_i(i=1,2,\dots, n)

微分方程常用函数

1.4.2. 初始值

  • 初始值: 是n阶系统在 t = 0 t=0 时接入激励, 其响应在 t = 0 + t=0_+ 时刻的值, 即 y ( j ) ( 0 + ) ( j = 0 , 1 , 2 , , n 1 ) y^{(j)}(0_+) \, (j=0,1,2,\dots,{n-1})

  • 初始状态: 是系统在激励尚未接入的 t = 0 t=0_- 时刻的响应值 y ( j ) ( 0 ) y^{(j)}(0_-) , 该值反映了系统的历史情况,且与激励无关。

1.4.3. 响应

y ( t ) = y z i ( t ) + y z s ( t ) y(t) = y_{zi}(t) + y_{zs}(t)

  • 零输入响应: y z i ( t ) y_{zi}(t) (zero input)

  • 零状态响应: y z s ( t ) y_{zs}(t) (zero status)

    • y z s ( 0 ) = 0 y z i ( 0 + ) = y z i ( 0 ) = y ( 0 ) y_{zs}(0_-) = 0 \longrightarrow y_{zi}(0_+)=y_{zi}(0_-)=y(0_-)
  • 响应分类:

    • 固有响应:系统固有频率 或叫自由响应
    • 强迫响应:与激励函数有关
    • 暂态响应:随时间增长而消失
    • 稳态响应:通常为阶跃函数和周期

1.4.4. Python 求解系统的响应

  • 系统的微分方程为
    77 y ( t ) + 2 d d t y ( t ) + d 2 d t 2 y ( t ) = f ( t ) 77 y{\left(t \right)} + 2 \frac{d}{d t} y{\left(t \right)} + \frac{d^{2}}{d t^{2}} y{\left(t \right)} = f(t)
    • t 0 t\geq0 时,接入激励 f ( t ) = 10 sin ( 2 π t ) f(t)=10\sin(2\pi t) , 求零状态响应
    • 可得 y ( t ) = 77 y ( t ) 2 y ( t ) + f ( t ) , t 0 y^{\prime\prime}{\left(t \right)} = - 77 y{\left(t \right)} - 2 y^{\prime}{\left(t \right)} + f(t) , \, t\geq0
    # 使用方程解  
    from scipy.integrate import odeint, solve_bvp, solve_ivp
    # odeint: Integrate a system of ordinary differential equations
    # solve_bvp: Solve a boundary-value problem for a system of ODEs
    # solve_ivp: Solve an initial value problem for a system of ODEs

    # 一阶微分方程组  
    def fvdp(t,y):
        '''
        来源:https://www.jianshu.com/p/ab57b600b854?utm_campaign=shakespeare
        要把y看出一个向量,y = [dy0,dy1,dy2,...]分别表示y的n阶导
        对于二阶微分方程,肯定是由0阶和1阶函数组合而成的,所以下面把y看成向量的话,y0表示最初始的函数,也就是我们要求解的函数,y1表示一阶导,对于高阶微分方程也可以以此类推
        '''
        y0, y1 = y
        ft = 10*np.sin(2*np.pi*t)
        y2 = -2*y1-77*y0+ft
        # y0是需要求解的函数,y1是一阶导
        # 返回的顺序是[一阶导, 二阶导],这就形成了一阶微分方程组
        return [y1, y2]

    y0 = [0, 0] # 初值[0,0]表示y(0)=0,y'(0)=0  
    t = np.linspace(0,5,100)
    y = odeint(fvdp, y0, t, tfirst=True) # 用 odeint 计算 y(t)
    y_ = solve_ivp(fvdp, t_span=(0,5), y0=y0, t_eval=t) # 用 solve_ivp 计算 y(t)

    # 开始绘图
    plt.subplot(211)
    y1, = plt.plot(t, y[:,0], label='y')
    y1_, = plt.plot(t,y[:,1],label='y‘')            
    plt.legend(handles=[y1,y1_], loc='upper right')
    plt.grid(True)

    plt.subplot(212)
    y2, = plt.plot(y_.t, y_.y[0,:],'g--',label='y(0)')
    y2_, = plt.plot(y_.t, y_.y[1,:],'r-',label='y(1)')
    plt.legend(handles=[y2,y2_], loc='upper right')
    plt.grid(True)

    plt.show()

[6

    # 用已有库的方法解 sg is scipy.signal
    sys = sg.lti([1],[1, 2, 77]) # 方程里的系数  
    ft = 10*np.sin(2*np.pi*t)
    _,y,_ = sg.lsim(sys,ft,T=t)
    # 开始绘图
    plt.plot(t,y,label='simple way') 
    plt.grid(True)
    plt.show()

[7

1.4.5. 冲激响应

  • 由单位冲激函数 δ ( t ) \delta(t) 所引起的零状态响应,记为 h ( t ) h(t)
    • δ ( t ) LTI h ( t ) \delta(t) \to \text{LTI} \to h(t)
    • 隐含条件:
      f ( t ) = δ ( t ) f(t) = \delta(t)
      对二阶系统 h ( 0 ) = h ( 0 ) = 0 h(0_-) = h^\prime(0_-) = 0

1.4.6. 阶跃响应

  • 由单位阶跃函数 ε ( t ) \varepsilon(t) 所引起的零状态响应,记为 g ( t ) g(t)

    • ε ( t ) LTI g ( t ) \varepsilon(t) \to \text{LTI} \to g(t)
    • 隐含条件:
      f ( t ) = ε ( t ) f(t) = \varepsilon(t)
      g ( 0 ) = g ( 0 ) = 0 g(0_-)=g^\prime(0_-)=0
  • 关联:
    g ( t ) = t h ( τ ) d τ g(t) = \int^t_{-\infty} h(\tau) d\tau
    h ( t ) = d d t g ( t ) h(t) = \frac{d }{d t}g(t)

1.4.7. Python 冲激响应与阶跃响应

  • 求以下系统的冲激响应和阶跃响应:
    7 y ( t ) + 4 y ( t ) + 6 y ( t ) = f ( t ) + f ( t ) 7y^{\prime\prime}(t) + 4y^{\prime}(t) + 6y(t) = f^\prime(t) + f(t)
    sys = sg.lti([1,1],[7,4,6]) # 方程里的系数 由高次幂到低次幂  
    st, sy = sg.step2(sys)
    it, iy = sg.impulse2(sys)
    sy1, = plt.plot(st, sy, label='step')
    iy1, = plt.plot(it, iy, label='impluse')
    # 开始绘图
    plt.legend(handles=[sy1,iy1], loc='upper right')
    plt.grid(True)
    plt.show()

9


1.4.8. 卷积积分 Convolution

  • 来源 f ^ ( t ) = n = f ( n Δ ) Δ p ( t n Δ ) \hat{f}(t) = \displaystyle\sum_{n=-\infty}^{\infty} f(n\Delta)\Delta p(t-n\Delta) , p 为脉冲
    lim Δ 0 f ^ ( t ) = f ( t ) = f ( τ ) δ ( t τ ) d τ \lim_{\Delta\to0} \hat{f}(t) = f(t) = \int_{-\infty}^{\infty} f(\tau)\delta(t-\tau)d\tau

  • f ( τ ) δ ( t τ ) d τ f ( τ ) h ( t τ ) d τ \int_{-\infty}^{\infty} f(\tau)\delta(t-\tau)d\tau \longrightarrow \int_{-\infty}^{\infty} f(\tau)h(t-\tau)d\tau
    可得 f ( t ) LTI y z s ( t ) f(t) \to \text{LTI} \to y_{zs}(t)

    • 卷积积分 y z s = f ( τ ) h ( t τ ) d τ y_{zs}= \int_{-\infty}^{\infty} f(\tau)h(t-\tau)d\tau
  • 定义:

    • f 1 f_1 f 2 f_2 的 卷积: f ( t ) = f 1 ( τ ) f 2 ( t τ ) d τ f(t) = \int_{-\infty}^{\infty} f_1(\tau)f_2(t-\tau)d\tau
    • 记为 f ( t ) = f 1 ( t ) f 2 ( t ) f(t) = f_1(t) \star f_2(t)
  • 代数性质:

    • 三定律:
      1. 交换律: f 1 f 2 = f 2 f 1 f_1 \star f_2 = f_2 \star f_1
      2. 分配律: f 1 [ f 2 + f 3 ] = f 1 f 2 + f 1 f 3 f_1 \star [f_2 + f_3] = f_1\star f_2 + f_1 \star f_3
      3. 结合律: [ f 1 f 2 ] f 3 = f 1 [ f 2 f 3 ] [f_1\star f_2]\star f_3 = f_1\star [f_2 \star f_3]
  • 特性:

    • f ( t ) δ ( t t 0 ) = δ ( t t 0 ) f ( t ) = f ( t t 0 ) f(t)\star\delta(t-t_0) = \delta(t-t_0) \star f(t) = f(t-t_0)
    • f ( t ) δ ( n ) ( t ) = f ( n ) ( t ) f(t)\star \delta^{(n)}(t) = f^{(n)}(t)
    • f ( t ) ε ( t ) = t f ( τ ) d τ f(t) \star \varepsilon(t) = \int_{-\infty}^{t} f(\tau)d\tau
    • ε ( t ) ε ( t ) = t ε ( t ) \varepsilon(t) \star \varepsilon(t) = t \cdot \varepsilon(t)
    • 衍生:
      • f ( t ) = f 1 ( t ) f 2 ( t ) f(t) = f_1(t)\star f_2(t)
      • f ( t t 1 t 2 ) = f 1 ( t t 1 ) f 2 ( t t 2 ) = f 1 ( t t 1 t 2 ) f 2 ( t ) = f 1 f 2 ( t t 1 t 2 ) f(t-t_1-t_2) = f_1(t-t_1)\star f_2(t-t_2) = f_1(t-t_1-t_2)\star f_2(t) = f_1 \star f_2(t-t_1-t_2)
  • 微分特性:

    • d n d t n [ f 1 ( t ) f 2 ( t ) ] = f 1 ( n ) ( t ) f 2 ( t ) = f 1 ( t ) f 2 ( n ) ( t ) \frac{d^n}{d t^n}[f_1(t) \star f_2(t)] = f_1^{(n)}(t) \star f_2(t) = f_1(t) \star f_2^{(n)}(t)
    • t [ f 1 ( τ ) f 2 ( τ ) ] d τ = [ t f 1 ( τ ) d τ ] f 2 ( t ) = f 1 ( t ) [ t f 2 ( τ ) d τ ] \int_{-\infty}^{t}[f_1(\tau) \star f_2(\tau)]d\tau = [\int_{-\infty}^{t}f_1(\tau)d\tau]\star f_2(t) = f_1(t) \star [\int_{-\infty}^{t}f_2(\tau)d\tau]
    • if f 1 ( ) = 0 or f 2 ( 1 ) ( ) = 0 , then f 1 ( t ) f 2 ( t ) = f 1 ( t ) f 2 ( 1 ) ( t ) f_1(-\infty) = 0 \, \text{or} \, f_2^{(-1)}(\infty)=0, \, \text{then} \, f_1(t)\star f_2(t) = f_1^\prime(t) \star f_2^{(-1)}(t)
  • 常用公式汇总:

    • K f ( t ) = K [ f ( t ) 净面积 ] K \star f(t) = K \cdot [f(t) \text{净面积}]
    • f ( t ) δ ( t ) = f ( t ) f(t) \star \delta(t) = f(t)
    • f ( t ) δ ( t ) = f ( t ) δ ( t ) = f ( t ) f(t) \star \delta^\prime(t) = f^\prime(t) \star \delta(t) = f^\prime(t)
    • f ( t ) ε ( t ) = f ( t ) δ ( 1 ) ( t ) = f ( 1 ) ( t ) δ ( t ) = f ( 1 ) ( t ) f(t) \star \varepsilon(t) = f(t) \star \delta^{(-1)} (t) = f^{(-1)}(t) \star \delta(t) = f^{(-1)}(t)
    • ε ( t ) ε ( t ) = t ε ( t ) \varepsilon(t) \star \varepsilon(t) = t \cdot \varepsilon(t)
    • e α t ε ( t ) e α t ε ( t ) = t e α t ε ( t ) e^{-\alpha t}\varepsilon(t) \star e^{-\alpha t}\varepsilon(t) = t\cdot e^{-\alpha t}\varepsilon(t)
    • e α 1 t ε ( t ) e α 2 t ε ( t ) = 1 α 2 α 1 ( e α 1 t e α 2 t ) ε ( t ) ( α 1 α 2 ) e^{-\alpha_1 t}\varepsilon(t) \star e^{-\alpha_2 t}\varepsilon(t) =\displaystyle\frac{1}{\alpha_2 - \alpha_1}(e^{-\alpha_1 t} - e^{-\alpha_2 t})\varepsilon(t) \, (\alpha_1 \neq \alpha_2)
    • ε ( t ) e α t ε ( t ) = 1 α ( 1 e α t ) ε ( t ) \varepsilon(t) \star e^{-\alpha t}\varepsilon(t) = \frac{1}{\alpha} (1-e^{-\alpha t})\varepsilon(t)
    • f ( t ) δ T ( t ) = f ( t ) m = δ ( t m T ) = m = f ( t m T ) f(t) \star \delta_T (t) = f(t) \star \displaystyle \sum^{\infty}_{m=-\infty} \delta(t-mT) = \sum^{\infty}_{m=-\infty} f(t-mT)
      • 周期为 T T 的周期单位冲激函数序列 δ T ( t ) = m = δ ( t m T ) \delta_T(t) = \sum^\infty_{m=-\infty} \delta(t-mT) , 常称为梳状 comb 函数
  • 相关函数:

    • 雷达卷积函数:
      R 12 ( t ) = f 1 ( t ) f 2 ( t ) = f 1 ( τ ) f 2 ( τ t ) d τ = f 1 ( τ + t ) f 2 ( τ ) d τ = R 21 ( t ) R_{12} (t) = f_1(t) \star f_2(-t) = \int_{-\infty}^{\infty}f_1(\tau)f_2(\tau-t)d\tau = \int_{-\infty}^{\infty}f_1(\tau+t)f_2(\tau)d\tau = R_{21}(-t)
      R 21 ( t ) = f 1 ( t ) f 2 ( t ) = f 1 ( τ ) f 2 ( τ + t ) d τ = f 1 ( τ t ) f 2 ( τ ) d τ = R 12 ( t ) R_{21} (t) = f_1(-t) \star f_2(t) = \int_{-\infty}^{\infty}f_1(\tau)f_2(\tau+t)d\tau = \int_{-\infty}^{\infty}f_1(\tau-t)f_2(\tau)d\tau = R_{12}(-t)
      • Normally R 12 ( τ ) R 21 ( τ ) R_{12}(\tau) \neq R_{21}(\tau)
    • 自相关函数:
      R ( t ) = f ( t ) f ( t ) = f ( τ ) f ( τ t ) d τ = f ( τ + t ) f ( τ ) d τ = R ( t ) R (t) = f(t) \star f(-t) = \int_{-\infty}^{\infty}f(\tau)f(\tau-t)d\tau = \int_{-\infty}^{\infty}f(\tau+t)f(\tau)d\tau = R(-t)
  • 其他:

    • 多径传输中存在失真问题, 发射机经某些物体反射产生回波现象,就算是反射信号也被采集。
      把在多条路径上 由延迟时间与衰减系数 的情况 称为混响。
      为了从 有干扰信号的回波系统中提取正常信号,可以设计逆系统进行补偿。
      e ( t ) 回波系统 h ( t ) r ( t ) 逆系统 h i ( t ) e ( t ) e(t) \to \text{回波系统} h(t) \to r(t) \to \text{逆系统} h_i (t) \to e(t)
      为了保证 输出为原激励信号 e ( t ) = e ( t ) δ ( t ) e(t) = e(t) \star \delta (t) 必须满足 h ( t ) h i ( t ) = δ ( t ) h(t) \star h_i(t) = \delta(t)
      h i ( t ) h_i(t) 的问题 称为 解卷积反卷积
    • 自适应滤波器 AF (Adaptive Filter) 可以根据误差信号调整系数 去对消 噪声信号,使得输出信号趋近于真实信号。

1.4.9. Python 求卷积积分

  • 已知两个连续时间信号为:
    f 1 ( t ) = { 2 , 0 < t < 1 0 , else f 2 ( t ) = { t , 0 < t < 2 0 , else f_1(t) = \begin{cases} 2, \, & 0<t<1 \\ 0, \, & \text{else} \end{cases} \hspace{3em} f_2(t) = \begin{cases} t, \, & 0<t<2 \\ 0, \, & \text{else} \end{cases}
    # sg is scipy.signal
    t1 = np.array([t*0.1 for t in range(-10,31)]) # t in [-1, 3]
    f1t = np.array([2 if 0<t<10 else 0 for t in range(-10,31)])
    t2 = np.array([t*0.1 for t in range(-10,31)]) # t in [-1,3]
    f2t = np.array([t*0.1 if 0<t<20 else 0 for t in range(-10,31)]) 
    yt = sg.convolve(f1t, f2t,'full')*0.1 # 计算卷积 calculate convolution  
    t3 = np.array([t*0.1 for t in range(-20,61)]) # t in [-1+-1, 3+3]
    # 开始绘图
    plt.plot(t3, yt, label='conv')
    plt.grid(True)
    plt.show()

12
在这里插入图片描述

1.4.10. 连续系统的算子 P

  • 微分算子: P = d d t P = \frac{d}{dt} ; P ( n ) = d n d t n P^{(n)} = \frac{d^n}{dt^n}

  • 积分算子: P 1 = t ( ) d τ P^{-1} = \int^{t}_{-\infty} (\cdot) d\tau

  • 性质:

    • P P 正幂 多项式可以因式分解
    • A ( P ) , B ( P ) A(P), B(P) P P 正幂多项式,则 A ( P ) B ( P ) = B ( P ) A ( P ) A(P)B(P) = B(P)A(P)
    • 微分算子方程公因子 不能随意 消去
    • A ( P ) , B ( P ) , D ( P ) A(P), B(P), D(P) P P 正幂多项式,
      D ( P ) [ A ( P ) D ( P ) B ( P ) ] f ( t ) = A ( P ) B ( P ) f ( t ) \displaystyle D(P) \cdot [\frac{A(P)}{D(P)\cdot B(P)}]f(t) = \frac{A(P)}{B(P)}f(t)
      A ( P ) D ( P ) B ( P ) [ D ( p ) f ( t ) ] A ( P ) B ( P ) f ( t ) \displaystyle\frac{A(P)}{D(P)\cdot B(P)}[D(p)f(t)] \neq \frac{A(P)}{B(P)}f(t)
  • 传输算子:
    H ( P ) = B ( P ) A ( P ) = b m P m + b m 1 P m 1 + + b 0 P n + a n 1 P n 1 + + a 0 H(P) = \displaystyle \frac{B(P)}{A(P)} = \frac{b_m P^m+ b_{m-1} P^{m-1} + \dots + b_0}{P^n + a_{n-1}P^{n-1} + \dots + a_0}


1.5. 差分方程

1.5.1. 定义

  • 一阶差分:
    一阶前向差分 Δ f ( k ) Δ k = f ( k + 1 ) f ( k ) ( k + 1 ) k Δ f ( k ) = f ( k + 1 ) f ( k ) \text{一阶前向差分}\, \displaystyle \frac{\Delta f(k)}{\Delta k} = \frac{f(k+1)-f(k)}{(k+1)-k} \\ \longrightarrow \Delta f(k) = f(k+1) - f(k)
    一阶后向差分 f ( k ) k = f ( k ) f ( k 1 ) k ( k 1 ) f ( k ) = f ( k ) f ( k 1 ) \text{一阶后向差分}\, \displaystyle \frac{\nabla f(k)}{\nabla k} = \frac{f(k)-f(k-1)}{k-(k-1)} \\ \longrightarrow \nabla f(k) = f(k) - f(k-1)

  • 线性性质:
    [ α f 1 ( k ) + b f 2 ( k ) ] = α f 1 ( k ) + b f 2 ( k ) \nabla[\alpha f_1(k) + bf_2(k)] = \alpha \nabla f_1(k) + b\nabla f_2(k)

  • 二阶差分:
    2 f ( k ) = [ f ( k ) ] = f ( k ) 2 f ( k 1 ) + f ( k 2 ) \nabla^2 f(k) = \nabla[\nabla f(k)] = f(k) - 2f(k-1) + f(k-2)

  • m阶差分:
    m f ( k ) = f ( k ) + b 1 f ( k 1 ) + + b m f ( k m ) \nabla^{m} f(k) = f(k) + b_1f(k-1) + \dots + b_mf(k-m)

1.5.2. 经典解法

  • 差分方程 本质上是 递推的代数方程, 若已知初始条件和激励, 利用迭代法可求其数值解。

y ( k ) + a n 1 y ( k 1 ) + + a 0 y ( k n ) = b m f ( k ) + b m 1 f ( k 1 ) + + b 0 f ( k m ) y(k) + a_{n-1}y(k-1)+\dots + a_0y(k-n) \\ = b_mf(k)+b_{m-1}f^(k-1) + \dots + b_0f(k-m)

  • 经典解法: y ( k ) = y h ( k ) + y p ( k ) y(k) = y_h(k) + y_p(k)

    • y ( k ) y(k) 完全解
    • y h ( k ) y_h(k) 齐次解 homogeneous solution
      y ( k ) + a n 1 y ( k 1 ) + + a 0 y ( k n ) = 0 y(k) + a_{n-1}y(k-1)+\dots + a_0y(k-n) = 0
    • y p ( k ) y_p(k) 特解
  • 特征根: eigenvalue 特征值
    1 + a n 1 λ 1 + + a 0 λ n = 0 λ i ( i = 1 , 2 , , n ) 1 + a_{n-1}\lambda^{-1} + \dots + a_0\lambda^{-n} = 0\, \to\, \lambda_i(i=1,2,\dots, n)

差分方程常用函数

1.5.3. 初始值

  • 初始状态: 用 y ( 1 ) , y ( 2 ) , , y ( n ) y(-1), y(-2), \dots, y(-n) 描述 n阶系统的初始状态。

1.5.4. 响应

y ( l ) = y z i ( l ) + y z s ( l ) y(-l) = y_{zi}(-l) + y_{zs}(-l)

  • 零输入响应: y z i ( k ) y_{zi}(k) (zero input)

    • 离散系统的激励为零,仅由系统的初始状态引起的响应
      y z i ( k ) + α n 1 y z i ( k 1 ) + + α 0 y z i ( k n ) = 0 y_{zi}(k) +\alpha_{n-1} y_{zi}(k-1) + \dots + \alpha_0 y_{zi}(k-n) = 0
  • 零状态响应: y z s ( k ) y_{zs}(k) (zero status)

    • 系统的初始状态 y z s ( l ) = 0 , l = 1 , 2 , , n y_{zs}(-l) = 0, \, l = 1,2, \dots, n 为零,仅由激励 f ( k ) f(k) 引起的响应
    • 初始值:由迭代法求出 y z s ( j ) , j = 0 , 1 , , n 1 y_{zs}(j),\, j = 0,1,\dots,n-1
  • 响应分类:

    • 固有响应:系统固有频率 或叫自由响应
    • 强迫响应:与激励函数有关
    • 暂态响应:随时间增长而消失
    • 稳态响应:通常为阶跃函数和周期

1.5.5. Python 求解离散系统的零状态响应

  • 输入信号 f ( k ) = s ( k ) + d ( k ) f(k) = s(k) + d(k) , 其中 s ( k ) = ( 2 k ) 0. 9 k , d ( k ) s(k)= (2k)0.9^k, \, d(k) 是随机噪声信号。求以下系统的零状态响应(均值滤波结果),取 M = 5 M=5
    y ( k ) = 1 M n = 0 M 1 f ( k n ) y(k) = \displaystyle \frac{1}{M}\sum^{M-1}_{n=0}f(k-n)
    # sg is scipy.signal
    d = np.random.rand(1,51)-0.5 # random.rand 出来的是 0到1 的随机数
    k = np.array([k for k in range(0,51)])
    s = 2*k*np.power(0.9,k)
    f = s+d[0]

    plt.subplot(211)
    plt.stem(k,f,'-',use_line_collection=True)
    plt.grid(True)

    M = 5
    a = 1
    b = np.ones(5)/5
    plt.subplot(212)
    y = sg.filtfilt(b,a,f) # digital filter forward and backward to a signal
    plt.stem(k,y,':',use_line_collection=True)
    plt.grid(True)
    
    plt.xlabel('time index k')
    plt.show()

15

1.5.6. 单位脉冲序列

  • 单位脉冲序列 (单位样值序列/单位取样序列)
    δ ( k ) = { 1 k = 0 0 k 0 \begin{aligned}\delta(k) = \begin{cases} 1 & k = 0 \\ 0 & k \neq 0\end{cases}\end{aligned}
    • 位移:
      δ ( k k 0 ) = { 1 k = k 0 0 k k 0 \begin{aligned}\delta(k-k_0) = \begin{cases} 1 & k = k_0 \\ 0 & k \neq k_0\end{cases}\end{aligned}
    • 加: δ ( k ) + 2 δ ( k ) = 3 δ ( k ) \delta(k) + 2\delta(k) = 3\delta(k)
    • 乘: δ ( k ) δ ( k ) = δ ( k ) \delta(k) \cdot \delta(k) = \delta(k)
    • 延时: δ ( k 1 ) δ ( k 2 ) = 0 \delta(k-1) \cdot \delta(k-2) = 0
    • 迭分:
      i = k δ ( i ) = { 0 , k < 0 1 , k 0 = ε ( k ) \begin{aligned}\displaystyle \sum^{k}_{i=-\infty} \delta(i) & = \begin{cases} 0, & k<0 \\ 1, & k\geq0 \end{cases} \\ & = \varepsilon(k)\end{aligned}
    • 取样性质:
      • f ( k ) δ ( k ) = f ( 0 ) δ ( k ) f(k)\delta(k) = f(0) \delta(k)
      • f ( k ) δ ( k k 0 ) = f ( k 0 ) δ ( k k 0 ) f(k)\delta(k-k_0) = f(k_0)\delta(k-k_0)
      • k = δ ( k ) = 1 \displaystyle \sum_{k=-\infty}^{\infty} \delta(k) = 1
      • k = f ( k ) δ ( k ) = f ( 0 ) \displaystyle \sum_{k=-\infty}^{\infty} f(k) \delta(k) = f(0)
      • k = f ( k ) δ ( k k 0 ) = f ( k 0 ) \displaystyle \sum_{k=-\infty}^{\infty} f(k) \delta(k-k_0) = f(k_0)
    • 偶函数: δ ( k ) = δ ( k ) \delta(k) = \delta(-k)

1.5.7. 单位阶跃序列

  • 单位阶跃序列
    ε ( k ) = { 0 k < 0 1 k 0 \begin{aligned}\varepsilon(k) = \begin{cases} 0 & k < 0 \\ 1 & k \geq 0\end{cases}\end{aligned}
    • 位移:
      ε ( k k 0 ) = { 0 k < k 0 1 k k 0 \begin{aligned}\varepsilon(k-k_0) = \begin{cases} 0 & k < k_0 \\ 1 & k \geq k_0\end{cases}\end{aligned}
    • 加: ε ( k ) + 2 ε ( k ) = 3 ε ( k ) \varepsilon(k) + 2\varepsilon(k) = 3\varepsilon(k)
    • 乘: ε ( k ) ε ( k ) = ε ( k ) \varepsilon(k) \cdot \varepsilon(k) = \varepsilon(k)
    • 延时: ε ( k 1 ) ε ( k 5 ) = ε ( k 5 ) \varepsilon(k-1) \cdot \varepsilon(k-5) = \varepsilon(k-5)
    • 迭分:
      i = k ε ( i ) = { 0 , k < 0 k + 1 , k 0 = ( k + 1 ) ε ( k ) \begin{aligned}\displaystyle \sum^{k}_{i=-\infty} \varepsilon(i) & = \begin{cases} 0, & k<0 \\ k+1, & k\geq0 \end{cases} \\ & = (k+1)\varepsilon(k)\end{aligned}
    • δ ( k ) \delta(k) 的关系:
      δ ( k ) = ε ( k ) ε ( k 1 ) ε ( k ) = i = k δ ( i ) \begin{aligned} \delta(k) & = \varepsilon(k) - \varepsilon(k-1) \\ \varepsilon(k) & = \displaystyle \sum_{i=-\infty}^{k}\delta(i) \end{aligned}

1.5.8. 单位脉冲响应

  • 由单位脉冲序列 δ ( k ) \delta(k) 所引起的零状态响应,记为 h ( k ) h(k)
    • 隐含条件:
      f ( k ) = δ ( k ) f(k) = \delta(k)
      对二阶系统 h ( 1 ) = h ( 2 ) = 0 h(-1) = h(-2) = 0

1.5.9. 单位阶跃响应

  • 由单位阶跃序列 ε ( k ) \varepsilon(k) 所引起的零状态响应,记为 g ( k ) g(k)

    • 隐含条件:
      f ( k ) = ε ( k ) f(k) = \varepsilon(k)
      对二阶系统 g ( 1 ) = g ( 2 ) = 0 g(-1)=g(-2)=0
  • 关联:
    g ( t ) = i = k h ( i ) g(t) = \displaystyle \sum^{k}_{i=-\infty} h(i)
    h ( t ) = g ( k ) = g ( k ) g ( k 1 ) h(t) = \nabla g(k) = g(k) - g(k-1)

1.5.10. Python 求解单位脉冲响应

  • 求以下离散系统的单位脉冲响应:
    y ( k ) + 3 y ( k 1 ) + 2 y ( k 2 ) = f ( k ) y(k) + 3y(k-1) +2y(k-2) = f(k)
    # sg is scipy.signal
    k = np.array([k for k in range(11)])
    a = [1., 3., 2.]
    b = [1.]
    h = sg.lfilter(b,a,k) # IIR or FIR filter
    plt.stem(k,h,'-', use_line_collection = True)
    plt.grid(True)
    plt.show()

19


1.5.11. 卷积和

  • i = f ( i ) δ ( k i ) i = f ( i ) h ( k i ) \displaystyle\sum_{i=-\infty}^{\infty} f(i)\delta(k-i) \longrightarrow \sum_{i=-\infty}^{\infty} f(i)h(k-i)
    可得 f ( k ) LTI 零状态 y z s ( k ) f(k) \to \text{LTI 零状态} \to y_{zs}(k)

    • 卷积和 y z s ( k ) = i = f ( i ) h ( k i ) y_{zs}(k)= \displaystyle\sum_{i = -\infty}^{\infty} f(i)h(k-i)
  • 定义:

    • f 1 f_1 f 2 f_2 在区间 ( , ) (-\infty,\infty) 的 卷积: f ( k ) = i = f 1 ( i ) f 2 ( k i ) f(k) = \displaystyle\sum_{i=-\infty}^{\infty} f_1(i)f_2(k-i)
    • 记为 f ( k ) = f 1 ( k ) f 2 ( k ) f(k) = f_1(k) \star f_2(k)
    • y z s ( k ) = i = f ( i ) h ( k i ) = f ( k ) h ( k ) y_{zs}(k)= \displaystyle\sum_{i = -\infty}^{\infty} f(i)h(k-i)= f(k)\star h(k)
    • f 1 ( k ) f_1(k) 是因果序列 ( f 1 ( k ) = 0 , k < 0 f_1(k)=0,\, k<0 ), 则: f ( k ) = i = 0 f 1 ( i ) f 2 ( k i ) f(k) = \displaystyle\sum_{i=0}^{\infty} f_1(i)f_2(k-i)
    • f 2 ( k ) f_2(k) 是因果序列 ( f 2 ( k ) = 0 , k < 0 f_2(k)=0,\, k<0 ), 则: f ( k ) = i = k f 1 ( i ) f 2 ( k i ) f(k) = \displaystyle\sum_{i=-\infty}^{k} f_1(i)f_2(k-i)
    • f 1 ( k ) , f 2 ( k ) f_1(k), \, f_2(k) 均是因果序列 ( f 1 ( k ) = f 2 ( k ) = 0 , k < 0 f_1(k)=f_2(k)=0,\, k<0 ), 则: f ( k ) = [ i = 0 k f 1 ( i ) f 2 ( k i ) ] ε ( k ) f(k) = \displaystyle[\sum_{i=0}^{k} f_1(i)f_2(k-i)]\varepsilon(k)
  • 代数性质:

    • 三定律:
      1. 交换律: f 1 f 2 = f 2 f 1 f_1 \star f_2 = f_2 \star f_1
      2. 分配律: f 1 [ f 2 + f 3 ] = f 1 f 2 + f 1 f 3 f_1 \star [f_2 + f_3] = f_1\star f_2 + f_1 \star f_3
      3. 结合律: [ f 1 f 2 ] f 3 = f 1 [ f 2 f 3 ] [f_1\star f_2]\star f_3 = f_1\star [f_2 \star f_3]
  • 特性:

    • f ( k ) δ ( k k 0 ) = δ ( k k 0 ) f ( k ) = f ( k k 0 ) f(k)\star\delta(k-k_0) = \delta(k-k_0) \star f(k) = f(k-k_0)
    • δ ( k ) δ ( k ) = δ ( k ) \delta(k) \star \delta(k) = \delta(k)
    • f ( k ) ε ( k ) = k f ( i ) f(k) \star \varepsilon(k) = \displaystyle\sum_{-\infty}^{k} f(i)
    • ε ( k ) ε ( k ) = ( k + 1 ) ε ( k ) \varepsilon(k) \star \varepsilon(k) = (k+1) \cdot \varepsilon(k)
    • [ f 1 ( k ) f 2 ( k ) ] = f 1 ( k ) f 2 ( k ) = f 1 ( k ) f 2 ( k ) \nabla[f_1(k) \star f_2(k)] = \nabla f_1(k) \star f_2(k) = f_1(k) \star \nabla f_2(k)
    • 衍生:
      f ( k ) = f 1 ( k ) f 2 ( k ) f ( k k 1 k 2 ) = f 1 ( k k 1 ) f 2 ( k k 2 ) = f 1 ( k k 1 k 2 ) f 2 ( k ) = f 1 f 2 ( k k 1 k 2 ) \begin{aligned}f(k) &= f_1(k)\star f_2(k) \\ f(k-k_1-k_2) & = f_1(k-k_1)\star f_2(k-k_2) \\ &= f_1(k-k_1-k_2)\star f_2(k) \\ & = f_1 \star f_2(k-k_1-k_2)\end{aligned}

1.5.12. Python 求卷积和

  • 求以下两个离散序列的卷积:
    x 1 ( k ) = sin ( k ) , 0 k 10 x 2 ( k ) = 0. 8 k , 0 k 15 x_1(k) = \sin(k),\, 0\leq k \leq 10 \hspace{3em} x_2(k) = 0.8^k,\, 0\leq k\leq 15
    # sg is scipy.signal
    k1 = np.linspace(0,10,11)
    x1 = np.sin(k1)
    plt.subplot(221)
    plt.stem(k1,x1,'-',use_line_collection=True)
    plt.grid(True)
    plt.title('x_1(k)=sin(k)')
    
    k2 = np.linspace(0,15,16)
    x2 = np.power(0.8,k2)
    plt.subplot(222)
    plt.stem(k2,x2,'-',use_line_collection=True)
    plt.grid(True)
    plt.title('x_2(k) = 0.8^k')
    
    plt.subplot(212)
    y = sg.convolve(x1, x2,'full') # 使用 scipy.signal 的卷积函数 convolve
    k3 = np.linspace(0, 25,26)
    plt.stem(k3,y,'-',use_line_collection=True)
    plt.grid(True)
    plt.title('y(k)')
    
    plt.xlabel('time index k')
    plt.subplots_adjust(top=1, wspace=0.4, hspace=0.5) # 调整视图  
    plt.show()

21

sum_conv

1.5.13. 差分算子 E

E 1 延迟算子 E 超前算子 E 1 f ( k ) = f ( k 1 ) E f ( k ) = f ( k + 1 ) E 2 f ( k ) = f ( k 2 ) E 2 f ( k ) = f ( k + 2 ) E n f ( k ) = f ( k n ) E n f ( k ) = f ( k + n ) \begin{aligned} E^{-1} & \to \text{延迟算子} \hspace{3em} & E & \to \text{超前算子} \\ E^{-1}f(k) & = f(k-1) & Ef(k) & = f(k+1) \\ E^{-2}f(k) & = f(k-2) & E^{2}f(k) & = f(k+2) \\ E^{-n}f(k) & = f(k-n) & E^{n}f(k) & = f(k+n)\end{aligned}

  • 性质:

    • E E 正幂 多项式可以因式分解 也可以相乘
    • A ( E ) , B ( E ) A(E), B(E) E E 的正幂或负幂多项式,则 A ( E ) B ( E ) = B ( E ) A ( E ) A(E)B(E) = B(E)A(E)
    • 差分算子方程公因子 不能随意 消去
    • A ( E ) , B ( E ) , D ( E ) A(E), B(E), D(E) E E 正幂多项式,
      D ( E ) [ A ( E ) D ( E ) B ( E ) ] f ( t ) = A ( E ) B ( E ) f ( t ) \displaystyle D(E) \cdot [\frac{A(E)}{D(E)\cdot B(E)}]f(t) = \frac{A(E)}{B(E)}f(t)
      A ( E ) D ( E ) B ( E ) [ D ( E ) f ( t ) ] A ( E ) B ( E ) f ( t ) \displaystyle\frac{A(E)}{D(E)\cdot B(E)}[D(E)f(t)] \neq \frac{A(E)}{B(E)}f(t)
  • 传输算子:
    H ( E ) = B ( E ) A ( E ) = b m E m + b m 1 E m 1 + + b 0 E n + a n 1 E n 1 + + a 0 H(E) = \displaystyle \frac{B(E)}{A(E)} = \frac{b_m E^m+ b_{m-1} E^{m-1} + \dots + b_0}{E^n + a_{n-1}E^{n-1} + \dots + a_0}

信号与系统(Python) 学习笔记摘录 (2) 傅里叶 Fourier

发布了4 篇原创文章 · 获赞 2 · 访问量 253

猜你喜欢

转载自blog.csdn.net/Varalpha/article/details/104908046