设载波频率为10Hz,信息速率为1Baud,用Matlab画出: (1)QPSK和OQPSK信号形式; (2)QPSK和OQPSK信号经过带宽为2Hz的系统的包络;
时间: 2024-05-10 20:21:27 浏览: 232
由于QPSK和OQPSK信号的产生方式不同,需要分别进行绘制。
QPSK信号的产生:
首先生成随机的二进制序列,每两个二进制数组合成一个QPSK符号,利用QPSK调制函数生成QPSK信号,代码如下:
```matlab
% 生成随机二进制序列
N = 1000; % 生成1000个符号
data = randi([0 1],N,1);
% 将二进制序列转换为QPSK符号
data_mod = qammod(data,4,'gray');
% 利用QPSK调制函数生成QPSK信号
fs = 100; % 采样率
t = 0:1/fs:(N/2-1/fs); % 时间序列
fc = 10; % 载波频率
qpsk_signal = real(data_mod.*exp(1j*2*pi*fc*t));
```
OQPSK信号的产生:
同样生成随机的二进制序列,每两个二进制数组合成一个OQPSK符号,利用OQPSK调制函数生成OQPSK信号,代码如下:
```matlab
% 生成随机二进制序列
N = 1000; % 生成1000个符号
data = randi([0 1],N,1);
% 将二进制序列转换为OQPSK符号
data_mod = oqpskmod(data);
% 利用OQPSK调制函数生成OQPSK信号
fs = 100; % 采样率
t = 0:1/fs:(N-1)/fs; % 时间序列
fc = 10; % 载波频率
oqpsk_signal = real(data_mod.*exp(1j*2*pi*fc*t));
```
绘制QPSK和OQPSK信号形式:
```matlab
% 绘制QPSK信号形式
figure;
subplot(2,1,1);
plot(t,qpsk_signal);
title('QPSK Signal');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
% 绘制OQPSK信号形式
subplot(2,1,2);
plot(t,oqpsk_signal);
title('OQPSK Signal');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
```
绘制QPSK和OQPSK信号经过带宽为2Hz的系统的包络:
将QPSK和OQPSK信号分别通过带宽为2Hz的低通滤波器,即可得到信号的包络。代码如下:
```matlab
% 设计带宽为2Hz的低通滤波器
[b,a] = butter(4,2*2/fs,'low');
% QPSK信号经过低通滤波器
qpsk_signal_filtered = filter(b,a,qpsk_signal);
% OQPSK信号经过低通滤波器
oqpsk_signal_filtered = filter(b,a,oqpsk_signal);
% 绘制QPSK信号经过低通滤波器的包络
figure;
subplot(2,1,1);
envelope_qpsk = abs(hilbert(qpsk_signal_filtered));
plot(t,envelope_qpsk);
title('Envelope of QPSK Signal (Bandwidth = 2Hz)');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
% 绘制OQPSK信号经过低通滤波器的包络
subplot(2,1,2);
envelope_oqpsk = abs(hilbert(oqpsk_signal_filtered));
plot(t,envelope_oqpsk);
title('Envelope of OQPSK Signal (Bandwidth = 2Hz)');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
```
阅读全文