请利用matlab语言写出BPSK和QPSK调制在AWGN信道下的SNR-BER误码率性能评估的代码
时间: 2023-03-08 18:31:34 浏览: 201
我可以提供一个参考代码:% 定义信号参数
fc=1000; % 载波频率
fs=10000; % 采样频率
N=1000; % 信号长度% BPSK调制
bpsk_data=randi([0,1],1,N); % 产生随机数据
bpsk_mod=2*bpsk_data-1; % 调制% QPSK调制
qpsk_data=randi([0,3],1,N); % 产生随机数据
qpsk_mod=2*qpsk_data-3; % 调制% 加噪声
snr_dB=[-2:10];
snr=10.^(snr_dB./10);
for i=1:length(snr_dB)
bpsk_rec(i,:)=awgn(bpsk_mod,snr_dB(i));
qpsk_rec(i,:)=awgn(qpsk_mod,snr_dB(i));
end% BPSK / QPSK解调
for i=1:length(snr_dB)
bpsk_demod(i,:)=real(bpsk_rec(i,:))>0; % 解调
qpsk_demod(i,:)=real(qpsk_rec(i,:))>0;
end% 计算误码率
for i=1:length(snr_dB)
bpsk_err(i)=size(find(bpsk_data-bpsk_demod(i,:)),2); % 计算误码率
qpsk_err(i)=size(find(qpsk_data-qpsk_demod(i,:)),2);
end% 计算信噪比-误码率性能
bpsk_bers=bpsk_err/N;
qpsk_bers=qpsk_err/N;% 绘制信噪比-误码率曲线
figure;
semilogy(snr_dB,bpsk_bers,'b--o');
hold on;
semilogy(snr_dB,qpsk_bers,'r--x');
grid on;
legend('BPSK','QPSK');
xlabel('信噪比(dB)');
ylabel('误码率');
阅读全文