AM 변조 신호의 FFT
AM 변조 사인파를 생성하고 있습니다. 반송파 주파수는$1000 \ \rm Hz$; 변조 주파수는$40 \ \rm Hz$ 과 $100 \%$ 진폭의 변조.
2 개의 약간 다른 방정식으로 2 개의 신호를 생성했습니다.
- 신호 1은 다음과 같습니다. $$\sin(2\pi f_m t) \cdot \sin(2\pi f_c t)$$
- 신호 2는 다음과 같습니다. $$\big(1-\sin(2\pi f_m t)\big) \cdot \sin(2\pi f_c t)$$
나는 왜 첫 번째 신호에 $1 \ \rm kHz$ FFT의 구성 요소와 두 신호가 동일한주기를 갖지 않는 이유.
양자 모두 $\sin(x)$ 과 $1-\sin(x)$같은주기를 가지고 있고 신호 1이 진폭 부비동과 반송파 부비동을 위상으로 가지고 있음을 알 수 있지만, 그 플롯 주위로 머리를 돌려 정확하게 해석 할 수 없습니다. 제공 할 수있는 모든 정보와 설명에 감사드립니다. :)
2 개의 신호를 생성하는 코드 스 니펫 :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import numpy as np
import os
#%% Signal 1
fs = 44100 # sampling rate, Hz, must be integer
duration = 1.0 # in seconds, may be float
# Define the time series
t = np.linspace(0, duration, int(duration*fs), endpoint=False) # time variable
# AM - Amplitude Modulation
fm = 40 # Modulation frequency
amplitude = np.sin(2*np.pi*fm*t)
# Output signal
fc = 1000 # Carrier frequency
signal1 = amplitude * np.sin(2*np.pi*fc*t).astype(np.float32)
# Apply FFT
fft_freq1 = np.fft.rfftfreq(signal1.shape[0], 1.0/44100)
fft1 = np.abs(np.fft.rfft(signal1))
#%% Signal 2
fs = 44100 # sampling rate, Hz, must be integer
duration = 1.0 # in seconds, may be float
# Define the time series
t = np.linspace(0, duration, int(duration*fs), endpoint=False) # time variable
# AM - Amplitude Modulation
fm = 40 # Modulation frequency
amplitude = np.sin(2*np.pi*fm*t)
# Output signal
fc = 1000 # Carrier frequency
signal2 = (1-amplitude) * np.sin(2*np.pi*fc*t).astype(np.float32)
# Apply FFT
fft_freq2 = np.fft.rfftfreq(signal2.shape[0], 1.0/44100)
fft2 = np.abs(np.fft.rfft(signal2))
#%% Plot
f, ax = plt.subplots(2, 3, sharex=False)
ax[0, 0].plot(t[:4411], signal1[:4411])
ax[0, 0].set_title('Signal 1')
ax[1, 0].plot(t[:4411], signal2[:4411])
ax[1, 0].set_title('Signal 2')
ax[0, 2].plot(fft_freq1[900:1101], fft1[900:1101])
ax[0, 2].set_title('Signal 1 FFT')
ax[1, 2].plot(fft_freq2[900:1101], fft2[900:1101])
ax[1, 2].set_title('Signal 2 FFT')
ax[0, 1].plot(t[:4411], amplitude[:4411])
ax[0, 1].set_title('Signal 1 AM')
ax[1, 1].plot(t[:4411], (1-amplitude)[:4411])
ax[1, 1].set_title('Signal 2 AM')
답변
AM 변조 신호에는 두 가지 정의가 있습니다.
첫 번째는 classic-AM (또는 기존 AM)이라고하며 다음과 같이 지정됩니다.
$$x_{AM}(t) = (A_c + m(t)) \cdot \cos(2\pi f_c t) \tag{1}$$
두 번째는 DSB-SC (이중 측 파대 억제 반송파)라고하며 다음과 같이 지정됩니다.
$$x_{AM}(t) = m(t) \cdot \cos(2\pi f_c t) \tag{2}$$
코드에서 첫 번째 예제에는 Eq.2 (DSB-SC)를 사용하고 두 번째 예제에는 Eq.1 (클래식 AM)을 사용합니다. 그들의 차이점은 첫 번째는 반송파 스펙트럼을 포함한다는 것입니다.$f_c$) 변조 신호 스펙트럼 (측 파대 스파이크) 외에 출력에서. 그러나 후자의 DSB-SC는 변조 신호 측 대역 스펙트럼 만 포함하고 반송파 스펙트럼은 포함하지 않으므로 이름은 억제 반송파 입니다.
DSB-SC는 영구적으로 방사되는 반송파 에너지가 절약되어 전송 에너지가 감소하여보다 효율적인 전송이 가능하다는 장점이 있습니다. 방송하기에 에너지 효율이 낮은 기존 AM은 (아날로그 하드웨어에 의한) 복조가 매우 간단하다는 장점이 있지만 엔벨로프 검출기 (다이오드, 커패시터 및 저항, 안테나 수신기에 추가 로 필요)가 필요합니다. 및 오디오 증폭기 회로).
각각 몇 개의 정현파 성분의 합인 신호의 시간 영역 곱셈 은 주파수 영역 컨볼 루션 으로 이해하기 쉽습니다 .
먼저 신호 1을 보여줍니다.
$$\sin(2\pi f_m t) \cdot \sin(2\pi f_c t),$$
그리고 신호 2 :
$$\big(1-\sin(2\pi f_m t)\big) \cdot \sin(2\pi f_c t),$$
그것에 주목 $\cos(x) = \frac{1}{2}e^{-ix} + \frac{1}{2}e^{ix}$ 각 실제 정현파를 음수 및 양수 주파수 성분으로 분할합니다.
그림에서 구성 요소 크기 만 표시했습니다. 분 광적으로 일치하는 구성 요소가 없기 때문에 구성 요소의 위상은 중요하지 않으므로 사인 대신 코사인을 말할 수도 있고 플롯은 여전히 동일합니다.
주파수 도메인은 신호의 주기성 속성에 대한보기도 제공합니다. 주기 신호 와 기본주기 $P$ 또한의 배수 인 모든 기간에 대해 주기적입니다. $P$따라서 신호를 특성화 할 때 기간 과 기본 기간을 구분해야합니다 . 기본 기간은 신호의 가장 짧은 기간입니다. 기본주기가있는 주기적 신호$P$신호의 기본주기에 대해 정확히 한주기를 갖는 주파수의 고조파 주파수로만 구성 될 수 있습니다. 그 주파수는 역수입니다$1/P$기본 기간의. 즉, 신호가 주기적이면 푸리에 변환은 신호 기본주기의 역수의 배수를 제외하고 모든 곳에서 0 값을 가져야합니다.
다음 주파수 영역 플롯의 눈금 표시는 기본주기의 역수의 배수 인 주파수를 보여줍니다. 눈금은 주파수 0을 포함하는 최소 밀도의 규칙적인 빗 모양의 패턴으로 배열되었습니다. 최소 밀도 패턴은 더 긴 기간이 아닌 기본주기를 포착하기 위해 선택되었습니다.
두 신호의 눈금 패턴이 다르므로 두 신호 의 기본주기가 다릅니다 .
그러나 그림은 두 신호가 신호 2의 기본주기 인 주기로 주기적임을 보여줍니다. 신호 2의 눈금 표시 패턴은 신호 1에있는 모든 주파수도 캡처합니다.
시간 영역 육안 검사는 결과를 확인합니다 (신호 및 수직선으로 표시된 기본주기, 파란색 : 신호 1, 빨간색 : 신호 2).