OQPSK调制解调仿真程序

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 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值