Lower sideband waveform of triangular spectrum signal

Time Domain Waveform of Triangular SSB Spectrum

 

01 half sideband modulation


I. Introduction

  In the eighth assignment, there is a half-sided modulation signal recovery problem. In the following, the signal waveform after modulation of the lower sideband will be obtained by way of numerical value and theoretical derivation. Let's start with the analysis of the triangular wave spectrum.

GM1681461067_1280_800.MPG|_-3

2. Triangular Wave Spectrum

  Next, deduce the time-domain signal corresponding to the triangular spectrum. For the triangular signal, it is easy to obtain its corresponding spectrum. Then, according to the dual characteristics of Fourier transform, the time domain signal of the frequency spectrum is obtained. In order to better draw the time-domain waveform, all the parameters in the frequency spectrum are changed to 1, so that a relatively concise time-domain signal waveform can be obtained.
GM1681462004_1280_800.MPG|_-9
  This is the time-domain waveform corresponding to the triangular pulse spectrum, and it is shown here—the transition between the time-domain waveforms corresponding to the equal-width and equal-height square wave spectrum. This is a theoretical derivation of the time domain waveform to which the frequency spectrum corresponds.
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')

▲ Figure 1.2.1 The time-domain waveform corresponding to the triangle tile

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

  Next, IFFT is used for numerical calculation and compared with theoretically derived time-domain waveforms. Here the triangle spectrum is declared. Use the Python command of IFFT to calculate the handsome waveform. Plotting the numerically computed waveform with the theoretical waveform *can see them superimposed. + Verifies the correctness of this formula, which lays the foundation for obtaining the SSB spectrum by numerical calculation later.
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()

▲ Figure 1.2.2 Numerical calculation results of IFFT calculation

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

  ·window·

3. Single sideband spectrum

  Now consider the lower sideband signal waveform, 'Since the previous numerical calculation tool is available, IFFT can be used to calculate the time domain waveform, then use this tool to directly calculate the single sideband waveform. For convenience, modify the waveform parameters in the figure into simple numbers. The modulation is centered at 3 radians per second. This is the time domain waveform with the corresponding lower sideband calculated using IFFT. =Then the question is, is this waveform correct? There is a way, that is to calculate the waveform above at the same time, and then superimpose them to see if it can be the same as the modulation waveform. The signal waveform corresponding to the upper and lower sidebands is shown here. They appear to be 90° out of phase. Applying the triangular pulse spectrum obtained above corresponds to the Sui hand type II formula, and modulate it on the cosine oscillation signal with frequency 3. This is to compare the obtained modulation waveform with the accumulation of the previous upper and lower sideband time domain waveforms, and it can be seen that they are indeed the same. Therefore, this also proves that the signal waveform obtained above is correct. Here are the individual waveforms obtained earlier.
GM1681470070_1280_800.MPG|_-11

▲ Waveforms corresponding to the upper and lower sidebands

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

▲ Figure 1.3.2 The comparison between the superposition of the upper sideband and the lower sideband and the modulated signal

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

▲ Figure 1.3.3 Upper sideband, lower sideband, superimposed signal and modulated signal

▲ 图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()

 

Summary  ※


  In this paper,
GM1681470159_1280_800.MPG|_-2
  Time Domain Waveform of Triangular SSB Spectrum


■ Links to related literature:

● Links to related diagrams:

Guess you like

Origin blog.csdn.net/zhuoqingjoking97298/article/details/130156783