基于matlab的DQPSK的代码
时间: 2023-12-21 11:04:30 浏览: 37
以下是一个基于 MATLAB 的 DQPSK 信号调制和解调的示例代码:
% DQPSK 信号调制
bits = [1 1 0 1 0 0 1 0]; % 待调制的比特流
L = length(bits);
Tb = 1; %比特时间间隔
fc = 10; %载波频率
t = Tb/100:Tb/100:1; %采样时间间隔
t = t';
s = zeros(length(t),1);
ss = zeros(length(t),1);
for i = 1:1:L,
if bits(i) == 1,
s((i-1)*100+1:i*100) = ones(100,1);
else bits(i) == 0,
s((i-1)*100+1:i*100) = -ones(100,1);
end
end
s_integ = cumsum(s)*Tb/100; % 累积求和
ss = cos(2*pi*fc*t + pi*s_integ); % DQPSK 调制信号
% DQPSK 信号解调
n = length(ss); % 信号长度
x = ss.*cos(2*pi*fc*t); % 乘以本振
y = ss.*sin(2*pi*fc*t);
x1 = [0; x(1:n-1)]; % 延迟一个时间间隔
y1 = [0; y(1:n-1)];
xd = x.*x1; % 两个信号相乘
yd = y.*y1;
I = cumsum(xd)*Tb/100; % 累积求和
Q = cumsum(yd)*Tb/100;
bits2 = zeros(1,L);
for i = 1:1:L,
if I((i-1)*100+1) > I(i*100),
bits2(i) = 1;
else
bits2(i) = 0;
end
end
disp(bits2); % 输出解调结果
希望这个例子可以帮助到你!