三角频谱信号下边带波形

三角单边带频谱的时域波形

01 边带调制


一、前言

  在第八次作业中, 有一个半边的调制信号恢复的习题。 下面将通过数值和理论推导的方式获得该下边带调制后的信号波形。 下面先从这个三角波频谱开始进行分析。

GM1681461067_1280_800.MPG|_-3

二、三角波频谱

  下面先推导一下三角频谱对应的时域信号, 对于三角信号来说, 很容易得到它对应的频谱。 然后在根据傅里叶变换的对偶特性, 得到该频谱的时域信号。  为了更好地绘制时域波形, 将频谱中的参数 都修改成1,  这样就可以得到一个比较简洁的时域信号波形了。
GM1681462004_1280_800.MPG|_-9
  这是三角脉冲频谱对应的时域波形, 这里显示了它一是等宽等高方波频谱对应的时域波形之间的转换。 这是对频谱对应的时域波形的理论推导。
GM1681467940_1280_800.MPG|_-3

from headm import *

t = linspace(-20, 20, 100000)
ft = sinc(t/2/pi)**2/2/pi
ft1 = sinc(t/2/pi)/2/pi*2

plt.plot(t, ft, lw=3)
plt.xlabel("t")
plt.ylabel("f(t)")
plt.grid(False)
plt.axis([min(t)-(max(t)-min(t))/20, max(t)+(max(t)-min(t))/20, -0.20, 0.5])
plt.tight_layout()
plt.show()

gifn = 150

for n in range(gifn):
    ratio = n/(gifn-1)
    ratio = abs(ratio*2-1)

    ftr = ft*ratio + ft1*(1-ratio)
    plt.clf()
    plt.plot(t, ftr, lw=3)
    plt.xlabel("t")
    plt.ylabel("f(t)")
    plt.grid(False)
    plt.axis([min(t)-(max(t)-min(t))/20, max(t)+(max(t)-min(t))/20, -0.20, 0.5])
    plt.tight_layout()
    plt.draw()
    plt.pause(.001)

    pltgif.append(plt)

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

▲ 图1.2.1 三角平铺对应的时域波形

▲ 图1.2.1 三角平铺对应的时域波形

  下面使用 IFFT 进行数值计算, 对比理论推导的时域波形。 这里声明三角形频谱。 使用 IFFT 的Python 命令, 计算出帅帅波形。 将数值计算的波形 与理论波形绘制在一起, *可以看到它们重叠在一起。 +验证了这个公式的正确性, 这为后面利用数值计算得到单边带频谱打下基础。
GM1681468474_1280_800.MPG|_-4

from headm import *
o = linspace(-10000, 10000, 200000)
os = (max(o)-min(o))/(len(o)-1)
t1 = 2*pi/os
o1 = max(o)-min(o)
ts = 2*pi/o1
tdim = linspace(-t1/2,t1/2, len(o))

ftt = sinc(tdim/2/pi)**2/2/pi

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)

Fo = (o+1)*G(o,-1,0) + (1-o)*G(o,0,1)

ft = real(fft.ifft(fft.fftshift(Fo)))
ft = fft.fftshift(ft)/ts

st = where(tdim > -20)[0][0]
ed = where(tdim > 20)[0][0]

plt.plot(tdim[st:ed], ft[st:ed], lw=4, label='IFFT')
plt.plot(tdim[st:ed], ftt[st:ed], lw=1, label='Formular')
plt.legend(loc='upper right')
plt.xlabel("t")
plt.ylabel("f(t)")
plt.grid(True)
plt.tight_layout()
plt.show()

▲ 图1.2.2 数值计算 IFFT计算的结果

▲ 图1.2.2 数值计算 IFFT计算的结果

  ·window·

三、单边带频谱

  下面考虑下边带信号波形, '既然已经有了前面的数值计算工具, 可以利用 IFFT 来计算时域波形, 那么就使用该工具直接计算出单边带波形。 为了方便, 将图中波形参数修改成简单的数字。 调制的中心在 3 弧度每秒。 这是使用 IFFT 计算出对应的下边带的时域波形。 =那么问题来了, 这个波形究竟是否正确呢? 有一个办法, 那就是同时计算出上边的波形,然后将它们叠加在一起, 看是否可以和调制波形相同。 这里显示了上边带与下边带对应的信号波形。 他们似乎相位相差了 90 °。 应用前面得到的三角脉冲频谱对应的是揣手二型公式,  将它调制在频率为 3 的 cosine 振荡信号上。 这是将得到的调制波形与前面上下边带时域波形的累加进行对比, 可以看到他们的确是相同的。 因此, 这也证明了前面所得到的信号波形是正确的的。 这里给出了前面所得到的各个波形。
GM1681470070_1280_800.MPG|_-11

▲ 上边带和下边带对应的波形

▲ 上边带和下边带对应的波形

▲ 图1.3.2 上边带与下边带叠加在一起与调制信号的对比

▲ 图1.3.2 上边带与下边带叠加在一起与调制信号的对比

▲ 图1.3.3 上边带,下边带,叠加信号与调制信号

▲ 图1.3.3 上边带,下边带,叠加信号与调制信号

from headm import *
o = linspace(-10000, 10000, 200000)
os = (max(o)-min(o))/(len(o)-1)
t1 = 2*pi/os
o1 = max(o)-min(o)
ts = 2*pi/o1
tdim = linspace(-t1/2,t1/2, len(o))

ftt = sinc(tdim/2/pi)**2/2/pi*2*cos(3*tdim)

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)

Fo = (-o-2)*G(o,-3,-2) + (o-2)*G(o,2,3)
ft = real(fft.ifft(fft.fftshift(Fo)))
fd = fft.fftshift(ft)/ts

Fo = (o+4)*G(o,-4,-3) + (-o+4)*G(o,3,4)
ft = real(fft.ifft(fft.fftshift(Fo)))
fu = fft.fftshift(ft)/ts
fa = fd+fu

st = where(tdim > -20)[0][0]
ed = where(tdim > 20)[0][0]

plt.plot(tdim[st:ed], fd[st:ed], lw=3, label='SSB Low')
plt.plot(tdim[st:ed], fu[st:ed], lw=3, label='SSB Up')
plt.plot(tdim[st:ed], ftt[st:ed], lw=3, label='AM')
plt.plot(tdim[st:ed], fa[st:ed], lw=1, label='Low+Up')

plt.legend(loc='upper right')
plt.xlabel("t")
plt.ylabel("f(t)")
plt.grid(True)
plt.tight_layout()
plt.show()

  结 ※


  文对三角脉冲信号的上下单边带调制波形进行了数值仿真,  验证了这些波形的正确性。
GM1681470159_1280_800.MPG|_-2
  三角单边带频谱的时域波形


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/130156783