构建16QAM信号 matlab仿真
时间: 2023-05-26 14:07:04 浏览: 128
以下是构建16QAM信号的MATLAB仿真代码:
%% 参数设置
M = 16; % QAM调制阶数
k = log2(M); % 每个符号的比特数
N = 100000; % 仿真传输的符号数目
sigma = 1/sqrt(10); % 噪声方差
SNR_dB = 10; % 比特信噪比,单位dB
SNR = 10^(SNR_dB/10); % 比特信噪比,单位线性值
Eb = 1; % 每个比特的能量
Es = Eb*k; % 每个符号的平均能量
%% 产生符号序列
data = randi([0 M-1],N,1); % 产生随机符号
%% 符号映射
constellation = qammod(0:M-1,M); % 16QAM星座
x = constellation(data+1); % 符号映射
%% 加噪声
noise = sigma*randn(size(x)); % 高斯噪声
y = x + noise; % 加噪声的信号
%% 解调器
x_hat = qamdemod(y,constellation); % 解调器
%% 统计误比特率(BER)
numErrorBits = sum(bitxor(data, x_hat)); % 计算比特错误数
BER = numErrorBits/N/k % 计算误比特率
%% 画信号点图
scatterplot(y); % 显示信号点图
xlabel('In-phase');
ylabel('Quadrature');
title('16QAM信号点图');
阅读全文