MATLAB程序:4PAM调制解调,绘制理论误码率、误比特率曲线和实际误码率、误比特率曲线曲线
时间: 2023-07-10 21:07:20 浏览: 608
以下是MATLAB代码实现4PAM调制解调,绘制理论误码率、误比特率曲线和实际误码率、误比特率曲线曲线。
```matlab
clc;clear;close all;
% 参数设置
M = 4; % 调制阶数
SNR_dB = 0:1:15; % 信噪比范围
N = 10^6; % 发送符号数
% 生成随机信源符号
source = randi([0 M-1],1,N);
% 4PAM调制
mod_data = pammod(source,M);
% 噪声
for i = 1:length(SNR_dB)
SNR = 10^(SNR_dB(i)/10);
sigma = sqrt(1/(2*SNR));
noise = sigma * randn(1,N);
% 加噪后的信号
rx_data = mod_data + noise;
% 4PAM解调
demod_data = pamdemod(rx_data,M);
% 统计误码率和误比特率
[num_err(i),ber(i)] = biterr(source,demod_data);
end
% 理论误码率和误比特率
Pb = (3/(M^2-1))*erfc(sqrt((M^2-1)/(2*SNR))); % 理论误码率
Pb_bit = Pb/log2(M); % 理论误比特率
% 绘图
figure;
semilogy(SNR_dB,ber,'bo-');
hold on;
semilogy(SNR_dB,Pb_bit,'r^-');
xlabel('信噪比(dB)');
ylabel('误比特率');
legend('实际误比特率','理论误比特率');
grid on;
figure;
semilogy(SNR_dB,num_err/N,'bo-');
hold on;
semilogy(SNR_dB,Pb,'r^-');
xlabel('信噪比(dB)');
ylabel('误码率');
legend('实际误码率','理论误码率');
grid on;
```
运行上述代码,即可得到实际误码率、误比特率曲线和理论误码率、误比特率曲线。
阅读全文