已知2PSK调制解调框图,在2s内产生二进制个数50,码元宽度为100的二进制序列试完成2PSK调制与解调
时间: 2024-02-27 12:57:57 浏览: 81
2PSK的调制与解调
4星 · 用户满意度95%
根据题意,我们需要在2秒内产生50个二进制数,因此每个二进制数的持续时间为2/50=0.04秒,即每个码元的宽度为0.04秒/100=0.4毫秒。因为是2PSK调制,所以我们可以将0表示为正弦波,1表示为负弦波。
下面是2PSK调制的Matlab程序:
```matlab
% 定义二进制序列
bits = [1 0 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 0 1 1];
% 将二进制序列转换为正负1序列
symbols = 2*bits-1;
% 生成时间轴
fs = 10000; % 采样率
T = 1/fs; % 采样时间间隔
t = 0:T:length(symbols)*T-T;
% 生成正弦波载波信号
fc = 1000; % 载波频率
carrier = sin(2*pi*fc*t);
% 2PSK调制
modulated = symbols.*carrier;
% 绘制调制信号时域波形
figure;
plot(t,modulated);
title('2PSK调制信号时域波形');
xlabel('时间 (秒)');
ylabel('幅度');
% 绘制调制信号频谱图
figure;
f = -fs/2:fs/length(t):fs/2-fs/length(t);
modulated_spectrum = fftshift(fft(modulated));
plot(f,abs(modulated_spectrum));
title('2PSK调制信号频谱图');
xlabel('频率 (赫兹)');
ylabel('幅度');
```
下面是2PSK解调的Matlab程序:
```matlab
% 2PSK解调
demodulated = zeros(1,length(bits));
for i=1:length(bits)
% 生成本地正弦波信号
local_carrier = sin(2*pi*fc*t((i-1)*length(carrier)+1:i*length(carrier)));
% 将接收信号与本地正弦波相乘
product = modulated((i-1)*length(carrier)+1:i*length(carrier)).*local_carrier;
% 对乘积信号进行低通滤波
lpf = fir1(10,fc*2/fs);
filtered_signal = filter(lpf,1,product);
% 判决输出
if mean(filtered_signal) < 0
demodulated(i) = 0;
else
demodulated(i) = 1;
end
end
% 比较解调结果与原始二进制序列
disp('原始二进制序列:');
disp(bits);
disp('解调结果:');
disp(demodulated);
```
运行上述程序即可完成2PSK调制和解调。
阅读全文