当前位置:网站首页>三角波与三角波卷积
三角波与三角波卷积
2022-06-13 00:35:00 【卓晴】

简 介: 根据信号与系统答疑过程中,学生对于三角形信号卷积结果的疑惑,给出了相应的数值、理论、以及频谱分析的解答。特别是后面频谱分析部分也是由另外参加答疑的同学提出的。之所以这个题目会产生疑问,主要原因来自于卷积计算“图解法”所带来的误导。 图解方法只能帮助确定卷积的阶段和积分上下限,求解卷积结果还是需要根据实际信号函数进行计算。
关键词:信号与系统,卷积,三角脉冲信号
§01三角波卷积
一、答疑碰到的问题
这两天信号与系统期末考试答疑中,多次碰到学生询问起一个课堂练习的习题。也就是为什么两个等腰三角形的卷积是答案(C):一个类似于升余弦的光滑曲线,而不是答案(B)一个尖顶的脉冲。此时才意识到这个问题的确有和直觉相违背的地方。

▲ 图1.1.1 三角波与自身的卷积波形:选择题通过分析,造成判断错误的来源,实际上是误用了求解卷积过程中的“图解法”。 图解方法通过把卷积的数学运算转换成信号波形的变化,帮助确定卷积阶段和积分的上下限。但往往也会对卷积结果产生误导,即部分同学会将两个图像重叠对应的图像面积当做求解的结果,但这种情况只能发生在一个信号是常量的情况。

▲ 图1.1.2 对于简单信号所使用的图解方法二、问题分析
这两天答疑过程中,学生也给出了对于这个问题很好的解释。下面给出相应的总结:
1、数值求解
下面是通过数值求解反映的 一些等腰三角形与其自身卷积的结果,结果说明了两个等腰三角学卷积的确是一个一阶导数光滑的曲线。

▲ 图1 三角波与三角波相互卷积2、理论分析
对于这类有限长度的简单信号,在求解它们之间相互卷积的时候,同时使用“图解法”帮助确定积分的区间。由于两个三角波形自身都具有两个变化阶段一个是上升阶段,一个是下降阶段。它们的长度相同,所以通过简单分析可以知道这两个三角波卷积过程,它们重合情况可以分成四个阶段,如下图所示。 当 t t t 不在这四个阶段的时候,两个三角形不重合,卷积结果为 0。

▲ 图1.2.2 卷积过程中四个不同的重叠阶段由于参与卷积的信号左右对称,所以只需要对于第一、第二阶段进行求解;然后将结果偶对称得到信号在 t > 0 t > 0 t>0 之后的结果。
(1)第一个阶段
在 t ∈ ( − 2 , 1 ) t \in \left( { - 2,1} \right) t∈(−2,1) 时,两个三角形的重叠范围是 [ − 1 , t + 1 ] \left[ { - 1,t + 1} \right] [−1,t+1] 。此时对应的卷积运算为 f ( t ) ∗ f ( t ) = ∫ − 1 t + 1 − ( τ − t − 1 ) ⋅ ( τ + 1 ) d τ f\left( t \right) * f\left( t \right) = \int_{ - 1}^{t + 1} { - \left( {\tau - t - 1} \right) \cdot \left( {\tau + 1} \right)d\tau } f(t)∗f(t)=∫−1t+1−(τ−t−1)⋅(τ+1)dτ = ∫ − 1 t + 1 ( − τ 2 + t ⋅ τ + t + 1 ) d τ = \int_{ - 1}^{t + 1} {\left( { - \tau ^2 + t \cdot \tau + t + 1} \right)d\tau } =∫−1t+1(−τ2+t⋅τ+t+1)dτ = − 1 3 τ 3 ∣ − 1 t + 1 + t 2 τ 2 ∣ − 1 t + 1 + ( t + 1 ) ⋅ ( t + 2 ) = \left. { - {1 \over 3}\tau ^3 } \right|_{ - 1}^{t + 1} + \left. { {t \over 2}\tau ^2 } \right|_{ - 1}^{t + 1} + \left( {t + 1} \right) \cdot \left( {t + 2} \right) =−31τ3∣∣∣∣−1t+1+2tτ2∣∣∣∣−1t+1+(t+1)⋅(t+2) = − 1 3 [ ( t + 1 ) 3 − 1 ] + t 2 [ ( t + 1 ) 2 − 1 ] + ( t + 1 ) ⋅ ( t + 2 ) = - {1 \over 3}\left[ {\left( {t + 1} \right)^3 - 1} \right] + {t \over 2}\left[ {\left( {t + 1} \right)^2 - 1} \right] + \left( {t + 1} \right) \cdot \left( {t + 2} \right) =−31[(t+1)3−1]+2t[(t+1)2−1]+(t+1)⋅(t+2) = t 3 6 + t 2 + 2 t + 4 3 = { {t^3 } \over 6} + t^2 + 2t + {4 \over 3} =6t3+t2+2t+34
这个求解化简过于繁琐,使用Python中的符号求积分软件包可以帮助进行求解
t,T = symbols('t,T')
result = integrate(-(T-t-1)*(T+1),(T,-1,t))
(2)第二阶段
在 t ∈ ( − 1 , 0 ) t \in \left( { - 1,0} \right) t∈(−1,0) ,参与卷积的信号重叠方式为如下图所示,重叠区域为 ( − 1 , t + 1 ) \left( { - 1,t + 1} \right) (−1,t+1) 。

▲ 图1.2.3 在第二阶段两个三角形重叠以及求解积分过程按照信号不同的分段,求解积分需要分成三个区域,它们分别是 ( − 1 , t ) , ( t , 0 ) , ( 0 , t + 1 ) \left( { - 1,t} \right),\left( {t,0} \right),\left( {0,t + 1} \right) (−1,t),(t,0),(0,t+1) 。
在区域 ( − 1 , t ) \left( { - 1,t} \right) (−1,t) 中积分表达式为 ∫ − 1 t ( τ − t + 1 ) ⋅ ( τ + 1 ) d τ = t 3 6 − t 2 − 1 3 \int_{ - 1}^t {\left( {\tau - t + 1} \right) \cdot \left( {\tau + 1} \right)d\tau } = { {t^3 } \over 6} - {t \over 2} - {1 \over 3} ∫−1t(τ−t+1)⋅(τ+1)dτ=6t3−2t−31
在区域 ( t , 0 ) \left( {t,0} \right) (t,0) 中的积分表达式为 ∫ t 0 − ( τ − t − 1 ) ⋅ ( τ + 1 ) d τ = − t 3 6 − t 2 − t \int_t^0 { - \left( {\tau - t - 1} \right) \cdot \left( {\tau + 1} \right)d\tau = - { {t^3 } \over 6} - t^2 - t} ∫t0−(τ−t−1)⋅(τ+1)dτ=−6t3−t2−t
在区域 ( 0 , t + 1 ) \left( {0,t + 1} \right) (0,t+1) 的积分表达式为 ∫ 0 t + 1 − ( τ − t − 1 ) ⋅ ( − τ + 1 ) d τ = ( − t + 2 ) ( t + 1 ) 2 6 \int_0^{t + 1} { - \left( {\tau - t - 1} \right) \cdot \left( { - \tau + 1} \right)d\tau } = { {\left( { - t + 2} \right)\left( {t + 1} \right)^2 } \over 6} ∫0t+1−(τ−t−1)⋅(−τ+1)dτ=6(−t+2)(t+1)2
将上面三个积分结果合并在一起,可以得到在此区间内卷积的结果 f ( t ) ∗ f ( t ) = − t 3 2 − t 2 + 2 3 f\left( t \right) * f\left( t \right) = - { {t^3 } \over 2} - t^2 + {2 \over 3} f(t)∗f(t)=−2t3−t2+32
t,T = symbols('t,T')
result = integrate(-(T-t-1)*(-T+1),(T,0,t+1)) +\
integrate(-(T-t-1)*(T+1),(T,t,0)) +\
integrate((T-t+1)*(T+1),(T,-1,t))
result = simplify(result)
(3)卷积完整解
合并前面求解的第一、第二阶段的公式,将它们进行反褶之后,便可以得到第三、第四阶段的公式。最终三角形卷积的结果为:

(4)数值验证
下面使用Python对上述公式进行绘制,查看卷积结果的信号波形。
def w(t,t1,t2):
return heaviside(t-t1, 0.5) - heaviside(t-t2, 0.5)
def f1(t):
return t**3/6 + t**2 + 2*t + 4/3
def f2(t):
return -t**3/2 - t**2 + 2/3
def f(t):
return f1(t) * w(t, -2, -1) +\
f2(t) * w(t, -1, 0) +\
f2(-t) * w(t, 0, 1) +\
f1(-t) * w(t, 1, 2)
t = linspace(-2, 2, 500)
fdim = f(t)
plt.plot(t, fdim)
plt.xlabel("t")
plt.ylabel("f(t)")
plt.grid(True)
plt.tight_layout()
plt.show()

▲ 图1.2.4 绘制出的结果3、傅里叶变换
可以利用傅里叶变换卷积定理,分析两个三角脉冲信号的卷积。对于高度为 1,宽度为 2 的对称等腰三角型,对应的频谱为 F ( ω ) = S a 2 ( ω 2 ) = sin 2 ( ω 2 ) ( ω 2 ) 2 = 4 sin 2 ( ω 2 ) ω 2 F\left( \omega \right) = Sa^2 \left( { {\omega \over 2}} \right) = { {\sin ^2 \left( { {\omega \over 2}} \right)} \over {\left( { {\omega \over 2}} \right)^2 }} = { {4\sin ^2 \left( { {\omega \over 2}} \right)} \over {\omega ^2 }} F(ω)=Sa2(2ω)=(2ω)2sin2(2ω)=ω24sin2(2ω) 那么它们卷积对应的傅里叶变换为 F 12 ( ω ) = S a 4 ( ω 2 ) = sin 4 ( ω 2 ) ( ω 2 ) 4 = 16 sin 4 ( ω 2 ) ω 4 F_{12} \left( \omega \right) = Sa^4 \left( { {\omega \over 2}} \right) = { {\sin ^4 \left( { {\omega \over 2}} \right)} \over {\left( { {\omega \over 2}} \right)^4 }} = { {16\sin ^4 \left( { {\omega \over 2}} \right)} \over {\omega ^4 }} F12(ω)=Sa4(2ω)=(2ω)4sin4(2ω)=ω416sin4(2ω)
当然,直接从上面结果进行傅里叶反变换求解卷积时域表达式也比较麻烦,不过它可以告诉我们,卷积结果的频谱幅度衰减的规律应该是 1 / ω 4 1/\omega ^4 1/ω4。再由信号波形的光滑性与频谱衰减之间的关系可知,卷积结果应该是满足二阶导数连续。 由此也可以帮助判断在选择题中,只有答案(C)能够满足二阶导数连续的要求,其它三个信号波形对应的一阶导数都不连续。
※ 总 结 ※
根据信号与系统答疑过程中,学生对于三角形信号卷积结果的疑惑,给出了相应的数值、理论、以及频谱分析的解答。特别是后面频谱分析部分也是由另外参加答疑的同学提出的。
之所以这个题目会产生疑问,主要原因来自于卷积计算“图解法”所带来的误导。 图解方法只能帮助确定卷积的阶段和积分上下限,求解卷积结果还是需要根据实际信号函数进行计算。
直接求取结果需要较多的积分化简,利用Python符号积分软件可以帮助求解结果的解析表达式。
● 相关图表链接:
边栏推荐
- BUUCTF之BabyUpload[GXYCTF2019]
- Masa auth - overall design from the user's perspective
- 63. different paths II
- Static analysis of malicious code
- [GXYCTF2019]禁止套娃--详解
- 6.824 Lab 3B: Fault-tolerant Key/Value Service
- Browser cache execution process
- ucore lab1
- Arduino controls tb6600 driver +42 stepper motor
- [LeetCode]28. Implement strstr()
猜你喜欢
![[error] invalid use of incomplete type uses an undefined type](/img/8a/7cb5d270cfd8831ddc146687fe4499.png)
[error] invalid use of incomplete type uses an undefined type

Maya modeling VI

Arduino control soil moisture sensor

The origin of MySQL in bedtime stories

硬(磁)盘(二)

Assembly language learning

MAYA建模六

MySQL lpad() and rpad() concatenate string functions with specified length

测试平台系列(97) 完善执行case部分

6.824 Lab 3B: Fault-tolerant Key/Value Service
随机推荐
New blog address
@Disallowcurrentexecution prevents quartz scheduled tasks from executing in parallel
C language standard IO, for example: fread(), fwrite(), fgetc(), etc. (end)
[LeetCode]20. Valid parentheses thirty-six
What are the conditions of index invalidation?
Paper reading and sharing
[LeetCode]7. Integer inversion thirty-nine
2022施工员-设备方向-通用基础(施工员)操作证考试题及模拟考试
天津银行周传凯:从 0 到 1,我的分布式数据库落地经验谈
[gxyctf2019] no dolls -- detailed explanation
Basics of network security (1)
Building crud applications in golang
63. different paths II
Conversion of integer part and decimal part between binary / octal / decimal / hexadecimal
The whole process from entering URL to displaying page (interview)
Handling method of wrong heading of VAT special invoice
Go design concurrent web crawler
Static analysis of malicious code
哲学和文学的区别
Easyexcel read excel simple demo