根据原理与实验截图,写出2ASK/2FSK/2PSK信号带宽计算式。根据实验波形,假设RB=2400波特,写出2ASK/2FSK/2PSK信号的信息速率、载频及带宽实际值
时间: 2023-08-16 18:07:31 浏览: 115
2ASK信号带宽计算式:
$$B = 2 \times (1 + \alpha) \times R_b$$
其中,$\alpha$为调制指数,$R_b$为比特率。
2FSK信号带宽计算式:
$$B = 2 \times \Delta f + R_b$$
其中,$\Delta f$为频移,$R_b$为比特率。
2PSK信号带宽计算式:
$$B = R_b$$
其中,$R_b$为比特率。
根据实验波形,假设$R_b=2400$波特,2ASK调制指数为$0.5$,2FSK频移为$1200$ Hz,2PSK载频为$1200$ Hz,则各自的信息速率、载频及带宽实际值为:
- 2ASK信号:信息速率为$2400$ bps,载频为$1200$ Hz,带宽为$7200$ Hz。
- 2FSK信号:信息速率为$2400$ bps,载频为$1200$ Hz,带宽为$3600$ Hz。
- 2PSK信号:信息速率为$2400$ bps,载频为$1200$ Hz,带宽为$2400$ Hz。
相关问题
帮我写一个关于2ASK 2FSK 2PSK的信号波形及其功率谱的代码
以下是一个基于Python的示例代码,用于绘制2ASK、2FSK和2PSK的信号波形及其功率谱:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成2ASK调制信号
def gen_2ask_signal(bits, fc, fs, amp):
t = np.linspace(0, len(bits) / fs, len(bits))
carrier = np.sin(2 * np.pi * fc * t)
signal = np.zeros(len(t))
for i, bit in enumerate(bits):
if bit == 1:
signal[i * int(fs / fc):(i + 1) * int(fs / fc)] = carrier[i * int(fs / fc):(i + 1) * int(fs / fc)]
return signal * amp
# 生成2FSK调制信号
def gen_2fsk_signal(bits, fc1, fc2, fs, amp):
t = np.linspace(0, len(bits) / fs, len(bits))
signal = np.zeros(len(t))
for i, bit in enumerate(bits):
if bit == 1:
signal[i * int(fs / fc1):(i + 1) * int(fs / fc1)] = np.sin(2 * np.pi * fc1 * t[i * int(fs / fc1):(i + 1) * int(fs / fc1)])
else:
signal[i * int(fs / fc2):(i + 1) * int(fs / fc2)] = np.sin(2 * np.pi * fc2 * t[i * int(fs / fc2):(i + 1) * int(fs / fc2)])
return signal * amp
# 生成2PSK调制信号
def gen_2psk_signal(bits, fc, fs, amp):
t = np.linspace(0, len(bits) / fs, len(bits))
carrier = np.sin(2 * np.pi * fc * t)
signal = np.zeros(len(t))
for i, bit in enumerate(bits):
if bit == 1:
signal[i * int(fs / fc):(i + 1) * int(fs / fc)] = carrier[i * int(fs / fc):(i + 1) * int(fs / fc)]
else:
signal[i * int(fs / fc):(i + 1) * int(fs / fc)] = -carrier[i * int(fs / fc):(i + 1) * int(fs / fc)]
return signal * amp
# 绘制信号波形及功率谱
def plot_signal_and_spectrum(signal, fs):
fig, axs = plt.subplots(2, 1, figsize=(10, 10))
axs[0].plot(signal)
axs[0].set_xlabel('Time (s)')
axs[0].set_ylabel('Amplitude')
axs[0].set_title('Signal Waveform')
axs[1].magnitude_spectrum(signal, Fs=fs, scale='dB')
axs[1].set_xlabel('Frequency (Hz)')
axs[1].set_ylabel('Magnitude (dB)')
axs[1].set_title('Power Spectrum')
plt.show()
# 测试代码
bits = np.random.randint(0, 2, 1000)
fc = 1000
fs = 10000
amp = 1
# 2ASK调制信号
signal_2ask = gen_2ask_signal(bits, fc, fs, amp)
plot_signal_and_spectrum(signal_2ask, fs)
# 2FSK调制信号
fc1 = 800
fc2 = 1200
signal_2fsk = gen_2fsk_signal(bits, fc1, fc2, fs, amp)
plot_signal_and_spectrum(signal_2fsk, fs)
# 2PSK调制信号
signal_2psk = gen_2psk_signal(bits, fc, fs, amp)
plot_signal_and_spectrum(signal_2psk, fs)
```
该示例代码中,`gen_2ask_signal()`、`gen_2fsk_signal()`和`gen_2psk_signal()`函数分别用于生成2ASK、2FSK和2PSK调制信号。`plot_signal_and_spectrum()`函数用于绘制信号波形及其功率谱。在测试代码中,我们随机生成了1000个二进制码作为调制信号,并绘制了三种调制方式的信号波形及功率谱。
帮我用MATLAB写一个关于2ASK 2FSK 2PSK的信号波形及其功率谱的代码
好的,以下是一个简单的MATLAB代码,用于生成2ASK、2FSK和2PSK的信号波形和功率谱:
```matlab
% 2ASK, 2FSK, 2PSK signal and power spectrum
% Define the signal parameters
fc = 1000; % carrier frequency
fs = 10000; % sampling frequency
T = 1/fs; % sampling time
L = 1000; % signal length
t = (0:L-1)*T; % time vector
% Define the message signal
Am = 1; % message amplitude
fm = 10; % message frequency
m = Am*sin(2*pi*fm*t); % message signal
% 2ASK modulation
Ac1 = 2; % carrier amplitude for binary 1
Ac0 = 0; % carrier amplitude for binary 0
A1 = m + Ac1; % modulated signal for binary 1
A0 = m + Ac0; % modulated signal for binary 0
s_2ask = A0; % initialize the signal
for i = 1:length(m)
if m(i) >= 0
s_2ask(i) = A1(i);
end
end
% 2FSK modulation
f1 = 100; % frequency for binary 1
f0 = 50; % frequency for binary 0
s_2fsk = sin(2*pi*f0*t); % initialize the signal
for i = 1:length(m)
if m(i) >= 0
s_2fsk(i) = sin(2*pi*f1*t(i));
end
end
% 2PSK modulation
s_2psk = Ac1*cos(2*pi*fc*t); % initialize the signal
for i = 1:length(m)
if m(i) >= 0
s_2psk(i) = Ac1*cos(2*pi*fc*t(i));
else
s_2psk(i) = Ac1*cos(2*pi*fc*t(i)+pi);
end
end
% Calculate the power spectrum
NFFT = 2^nextpow2(L); % number of FFT points
Y_2ask = fft(s_2ask,NFFT)/L;
Y_2fsk = fft(s_2fsk,NFFT)/L;
Y_2psk = fft(s_2psk,NFFT)/L;
f = fs/2*linspace(0,1,NFFT/2+1);
P_2ask = 2*abs(Y_2ask(1:NFFT/2+1));
P_2fsk = 2*abs(Y_2fsk(1:NFFT/2+1));
P_2psk = 2*abs(Y_2psk(1:NFFT/2+1));
% Plot the signals and power spectrum
figure;
subplot(3,2,1);
plot(t,m);
title('Message signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3,2,2);
plot(f,P_2ask);
title('2ASK power spectrum');
xlabel('Frequency (Hz)');
ylabel('Power');
subplot(3,2,3);
plot(t,s_2ask);
title('2ASK modulated signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3,2,4);
plot(f,P_2fsk);
title('2FSK power spectrum');
xlabel('Frequency (Hz)');
ylabel('Power');
subplot(3,2,5);
plot(t,s_2fsk);
title('2FSK modulated signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3,2,6);
plot(f,P_2psk);
title('2PSK power spectrum');
xlabel('Frequency (Hz)');
ylabel('Power');
```
这段代码将生成一个包含三个信号波形和功率谱的图表。如果需要更改信号参数,可以在代码中修改相应的变量。