Matlab编程生成π4-DQPSK调制波形的代码
clear all; clc;
% 生成基带信号 N = 10000; % 采样点数 A = 1; % 幅度 fc = 10; % 带宽 fs = 4fc; % 采样率 t = linspace(0, N/fs, N); % 时间序列 f0 = Acos(2pifc*t); % 基带信号
% 生成符号序列 M = 4; % 调制阶数 data = randi([0 M-1], 1, N/2); % 随机生成符号序列 data_I = cos(2pi(data/M+0.25)); % I 分量 data_Q = sin(2pi(data/M+0.25)); % Q 分量 data_I = repelem(data_I, 2); % I 分量重复采样 data_Q = repelem(data_Q, 2); % Q 分量重复采样
% 生成 π/4-DQPSK 调制信号 phase = 0; % 初始相位 mod_sig = zeros(1, N); % 调制信号 for n = 1:N/2 x_I = data_I(n)*cos(phase)-data_Q(n)*sin(phase); % I 分量 x_Q = data_Q(n)cos(phase)+data_I(n)sin(phase); % Q 分量 mod_sig(2n-1) = x_I; % 采样 mod_sig(2n) = x_Q; % 采样 % 更新相位 if data_I(n) == 1 && data_Q(n) == 1 phase = phase + pi/4; elseif data_I(n) == 1 && data_Q(n) == -1 phase = phase - pi/4; elseif data_I(n) == -1 && data_Q(n) == 1 phase = phase - pi/4; elseif data_I(n) == -1 && data_Q(n) == -1 phase = phase + pi/4; end end
% 绘制调制波形 subplot(2, 1, 1); plot(t, f0); title('基带信号'); xlabel('时间 (s)'); ylabel('幅度');
subplot(2, 1, 2); plot(t, mod_sig); title('π/4-DQPSK调制信号'); xlabel('时间 (s)'); ylabel('幅度')
原文地址: https://www.cveoy.top/t/topic/clck 著作权归作者所有。请勿转载和采集!