OQPSK调制解调仿真程序
OQPSK(偏移四相相移键控)调制解调系统的MATLAB仿真程序,包含信号生成、调制、传输、解调和性能分析。
%% OQPSK调制解调系统仿真
clear all; close all; clc;
%% 参数设置
N = 10000; % 传输的比特数
fc = 1000; % 载波频率 (Hz)
fs = 10000; % 采样频率 (Hz)
Ts = 1/fs; % 采样间隔
T_symbol = 0.01; % 符号周期 (秒)
Ns = T_symbol * fs; % 每个符号的采样点数
EbN0_dB = 0:2:12; % 信噪比范围 (dB)
N0 = 1; % 噪声功率谱密度
% 计算比特能量
Eb = 1; % 每比特能量
%% 生成随机比特序列
data_bits = randi([0, 1], 1, N);
fprintf('生成 %d 个随机比特\n', N);
%% OQPSK调制
% 将比特序列分为I路和Q路
I_bits = data_bits(1:2:end);
Q_bits = data_bits(2:2:end);
% 确保I路和Q路长度相同
if length(I_bits) > length(Q_bits)
I_bits = I_bits(1:length(Q_bits));
elseif length(Q_bits) > length(I_bits)
Q_bits = Q_bits(1:length(I_bits));
end
% 将比特映射到符号:0->-1, 1->+1
I_symbols = 2 * I_bits - 1;
Q_symbols = 2 * Q_bits - 1;
% 创建时间序列
t = 0:Ts:(length(I_symbols)*T_symbol - Ts);
% 对I路和Q路符号进行脉冲成形(矩形脉冲)
I_baseband = rectpulse(I_symbols, Ns);
Q_baseband = rectpulse(Q_symbols, Ns);
% Q路延迟半个符号周期(OQPSK的关键特性)
delay_samples = floor(Ns/2);
Q_baseband_delayed = [zeros(1, delay_samples), Q_baseband(1:end-delay_samples)];
% 确保I路和Q路长度相同
min_length = min(length(I_baseband), length(Q_baseband_delayed));
I_baseband = I_baseband(1:min_length);
Q_baseband_delayed = Q_baseband_delayed(1:min_length);
t = t(1:min_length);
% 生成载波信号
carrier_I = cos(2*pi*fc*t);
carrier_Q = sin(2*pi*fc*t);
% 调制信号:I路乘以cos载波,Q路乘以sin载波
modulated_signal

最低0.47元/天 解锁文章
312

被折叠的 条评论
为什么被折叠?



