01 第六次作业
一、习题简介
在第六次作业中, 包括有四个习题,要求对已知信号频谱进行傅里叶反变换,求取信号的时域波形。 其中有三个频谱是给出了幅度谱和相位谱, 有一个习题则是给出了频谱的表达式。 在求解的过程中可以直接通过傅里叶变换变公式进行求解, 也可以通过傅里叶变换的性质完成求解。
二、习题求解
1、第一题
第一小题的频谱是通过幅度谱和相位谱给定的。 直接应用傅里叶变换公式, 求解信号时域表达式 f(t)。 根据频谱的左边波形, 可以写作 A 乘以 e 的 j 四分之Pi 次方。 右边的频谱 可以写作 A 乘以 e 的 负j 四分之Pi。 同时对两个频谱进行傅里叶反变换。 结果相加便可以得到 f(t)。 对于第一项, 对其进行积分, 写出对应指数原函数, 进行求解之后得到积分结果。 化简一些对应的表达式。 对于第二项, 遵循相同的步骤, 可以得到它的表达式。 它们的系数相同, 合并两项, 对这个结果进一步化简, 便可以得到sine 的函数, 化简表达式。 最后得到 f(t) 的最终表达式。 这是第一小题的解答。
这是绘制出 f(t) 的波形。可以看到它是在原来的 sinc 函数的基础上,有了往右的平移变化。 为了验证上述公式的正确性, 这里使用快速傅里叶变换直接对频谱采样后的数值进行反变换, 得到了对应的时域波形。 将它和公式波形绘制在一起, 可以看到大部分区域是重叠的, 只是在远离 0 点时对应的曲线有误差。 这里对项频中左右的相位进行改变, 从 0 变化到 二分之 Pi, 更加清晰的看到, 由于相位的引入, 信号从最初的 sinc 函数逐步偏移变化的情况。 直到相位变化到二分之 Pi, 这个波形相当于对 sinc 波形做了一次 希尔伯特变换。
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2023-04-07
#
# Note:
#============================================================
from headm import *
def G(t, startn, endn):
return heaviside(t-startn,0.5)-heaviside(t-endn,0.5)
def Gt(t, center, width):
startn = center-width/2
endn = startn + width
return heaviside(t-startn,0.5)-heaviside(t-endn,0.5)
#------------------------------------------------------------
thetadim = linspace(0, pi/2, 100)
t = linspace(-20,20,10000)
for theta in thetadim:
ft = (G(t,-pi,0)-G(t,0,pi))* theta
ft1 = 1/pi/t*(sin(theta)+sin(pi*t-theta))
plt.clf()
plt.plot(t, ft, lw=2, label='Phi(omega)')
plt.plot(t, ft1, lw=3, label='f(t)')
plt.xlabel("omega")
plt.ylabel("Phi(omega)")
plt.title('Theta:%5.2f'%theta)
#plt.grid(True)
plt.axis([min(t)-(max(t)-min(t))/20, max(t)+(max(t)-min(t))/20, -1.60, 1.60])
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
#============================================================
▲ 图1.2.1 不同Theta下对应的波形
2、第二题
第二小题给出了信号频谱的表达式, 与其直接代入公式进行计算, 不如将表达式进行饮食分解。 这样就形成了几个常见到信号频谱的叠加。 第一项对应的常量 4, 第二项对应的右边指数信号 e 的 负 2 t 次方, 第三个对应 e 的 负 5 t 次方。 将它们叠加起来就是信号 f(t) 的表达式。 这是利用了傅里叶变换的线性特性。 比直接使用傅里叶反变换公式更加简单。 这里给出了 f(t) 的波形, 请注意它的基线是 4 的常量。
▲ 图1.2.2 求解结果
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2023-04-07
#
# Note:
#============================================================
from headm import *
t = linspace(-1, 5, 1000)
def G(t, startn, endn):
return heaviside(t-startn,0.5)-heaviside(t-endn,0.5)
def Gt(t, center, width):
startn = center-width/2
endn = startn + width
return heaviside(t-startn,0.5)-heaviside(t-endn,0.5)
ft = 4 + exp(-2*t)*heaviside(t,0.5) - exp(-5*t)*heaviside(t, 0.5)
plt.plot(t, ft, lw=3)
plt.xlabel("t")
plt.ylabel("f(t)")
plt.grid(True)
plt.grid(False)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
3、第三题
第三小题给出了信号的幅度谱和相位谱。 不过这个频谱比较简单, 可以使用在 负 omega 0 到 正 omega 0 之间的一个复指数来表示。 对它进行傅里叶反变换, 合并积分式中的两个指数, 计算这个指数的定积分。 写出对应的原函数, 化简系数。 计算后面的定积分。 在利用欧莱公式将其转换成三角函数, 进行化简, 得到最后的表达式。 这是求出的信号 f(t) 的表达式。 下面绘制出该信号的波形, 这里给出了其中参数 A, omega 0, t0的数值。 从波形上来看, 是 sinc 函数 往右平移了单位 1。 这是第三小题的答案。
4、第四题
第四个小题的频谱有的特别, 它的幅度谱是 1, 相位谱在 omega 为正, 为负时, 分别对应的是 二分之 Pi, 和负二分之 Pi。 因此在 omega 小于 0时, 对应的频谱为 e 的 j 二分之 Pi 次方, 在 omega 大于 0 时, 对应的频谱为 e 的 负 j 二分之 Pi。 根据复指数定义, 它们分表对应 j 与 负 j。 如果两边同时乘以 j, 频谱就会变成正负 1。 所以 这里给出了频谱 乘以 j 之后的表达式, 是关于 omega 的符号函数。
下面使用傅里叶变换对偶特性, 来求解符号函数的傅里叶反变换。 已知符号函数的频谱为 j omega 分值 2, 所以 j t 分之二的傅里叶变换就等于 2 Pi sine 负 omega。 sine 函数为奇函数, 将 omega 前面的符号提出来, 根据傅里叶变换线性性, 两边除以 2, 再将 Pi 移到左边, j 移到右边, 便可以得到 Pi t 分之一的傅里叶变换的表达式。 再对照前面 F omega 的表达式, 就会发现, F omega 对应的时域信号就应该是 PI t 分之一。 这就是对于时域信号的表达式, 最终得到了 f(t) 的表达式。
▲ 图1.2.3 求解结果
※ 总
本文对于第六次作业中, 傅里叶反变换的系统进行了讨论。
▲ 图2.1 信号的频谱