作业辅导视频 SS2023 HW4:求解卷积数值

求解卷积数值

01 解卷积


  第四次作业中,有一个求解卷积数值的题目。 两个参与卷积的信号 f1,f2 的波形给出了。 分别求卷积结果在 0,负一,1,3 处的取值。 如果选择 f1 进行反褶平移, 这是卷积时间 t 等于 0 时刻 对应 f1 的位置,  这是 t 等于 1 时对应 f1 所在的位置。  t 等于 负一时对应 f1 所在的位置;  t 等于 3 时,对应 f1 的位置。 下面分别求解 这几个位置时对应的卷积结果。
GM1680269898_1280_800.MPG|_-11

▲ 图1.1 卷积数值计算

▲ 图1.1 卷积数值计算

一、卷积结果

  首先考察卷积在 t 等于 0 时刻 对应的卷积结果。 此时 f1 中心在原点, 它的右边乘积积分 为0.5; 它的左边乘积积分 等于 1。 将它们加在一起为卷积结果,等于1.5。  下面考察 t 等于 负一 对应的卷积结果, 这是 f1 所在的位置, 左右两部分积分结果都是 1, 对应卷积结果等于 2。   下面考察 t 等于 1 时对应的卷积结果, 此时 f1 的中心位于 1, 它的左右积分分别是处 0.5 负 0.5。 因此对应的卷积结果等于 0。   最后,考察 t 等于 3 时对应的卷积结果。   卷积结果为 负 0.5。  至此, 我们获得了四个特殊点的卷积值。    这是这道题目的答案。
GM1680270821_1280_800.MPG|_-31

▲ 图1.1.1 计算结果

▲ 图1.1.1 计算结果

  下面通过Python编程, 计算卷积波形图。 在这个数值计算的图中, 可以找到对应的结果。 它们与前面计算所得到的数值是相等的。 
GM1680271290_1280_800.MPG|_-6
▲ 图1.1.2  数值计算过程

▲ 图1.1.2 数值计算过程

  结 ※


  文对第四次作业中的一道有趣的求解卷积的习题进行了讨论。 利用卷积的图解方法可以比较容易获得对应卷积结果的数值。
GM1680428506_1280_800.MPG|_-2

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2023-03-31
#
# Note:
#============================================================

from headm import *
from tsmodule.tsdraw        import *


pltgif = PlotGIF()

def G(t, startn, endn):
    return heaviside(t-startn,0)-heaviside(t-endn,0)
def Gt(t, center, width):
    startn = center-width/2
    endn = startn + width
    return heaviside(t-startn,0.5)-heaviside(t-endn,0.5)

t = linspace(-3.5, 5, 10000)
ratio = (max(t)-min(t))/len(t)

f2 = 2*G(t,-2,0) + G(t, 0,1) - G(t, 1, 3)

ddim = linspace(-3.5, 5, 100)
rdim = []

for d in ddim:
    tt = t-d
    f1 = -tt*G(tt,-1,0) + tt*G(tt,0,1)

    r = sum([v1*v2 for v1,v2 in zip(f2,f1)])*ratio
    rdim.append(r)

#    sn = int(3.5/(max(t)-min(t))*len(t))
#    f = convolve(f1,f2)[sn:sn+len(t)]*ratio

    plt.clf()
    plt.plot(t, f1, lw=1, label='f1(t)')
    plt.plot(t, f2, lw=1, label="f2(t)")
#    plt.plot(t, f, lw=3, label="f(t)")
    plt.plot(ddim[:len(rdim)], rdim, lw=3, label='Convolve')

    plt.arrow(-4, 0.0, 9.5, 0, shape="full", lw=0.2, length_includes_head=True, head_width=0.075)
    plt.arrow(0, -1.1, 0, 3.8, shape="full", lw=0.2, length_includes_head=True, head_width=0.075)


    plt.axis([min(t)-0.5,max(t)+0.5, -1.5, 3])

    plt.xlabel("t")
    plt.ylabel("f(t)")
    plt.legend(loc="upper right")
    plt.tight_layout()
    plt.draw()
    plt.pause(.1)

    pltgif.append(plt)

#------------------------------------------------------------

pltgif.save()
printf('\a')





#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/129888800
今日推荐