请用Matlab中mod函数将QPSK、BPSK、16QAM在2dB与6dB的情况下的星座图绘制在一张图片上
时间: 2024-02-05 11:13:35 浏览: 22
以下是一个Matlab代码示例,用于绘制QPSK、BPSK和16QAM星座图在2dB和6dB的信噪比下的图像:
```matlab
% 生成调制符号
M = 4; % QPSK调制
x = randi([0 M-1], 1000, 1);
y = qammod(x, M);
M = 2; % BPSK调制
x2 = randi([0 M-1], 1000, 1);
y2 = pskmod(x2, M);
M = 16; % 16QAM调制
x3 = randi([0 M-1], 1000, 1);
y3 = qammod(x3, M);
% 添加噪声
SNR = [2 6];
y_noisy = zeros(length(y), length(SNR));
y2_noisy = zeros(length(y2), length(SNR));
y3_noisy = zeros(length(y3), length(SNR));
for i=1:length(SNR)
y_noisy(:,i) = awgn(y, SNR(i), 'measured');
y2_noisy(:,i) = awgn(y2, SNR(i), 'measured');
y3_noisy(:,i) = awgn(y3, SNR(i), 'measured');
end
% 绘制星座图
figure();
subplot(2,3,1);
plot(real(y), imag(y), 'o');
title('QPSK星座图');
axis([-2 2 -2 2]);
subplot(2,3,2);
plot(real(y_noisy(:,1)), imag(y_noisy(:,1)), 'o');
title('2dB QPSK星座图');
axis([-2 2 -2 2]);
subplot(2,3,3);
plot(real(y_noisy(:,2)), imag(y_noisy(:,2)), 'o');
title('6dB QPSK星座图');
axis([-2 2 -2 2]);
subplot(2,3,4);
plot(real(y2), imag(y2), 'o');
title('BPSK星座图');
axis([-2 2 -2 2]);
subplot(2,3,5);
plot(real(y2_noisy(:,1)), imag(y2_noisy(:,1)), 'o');
title('2dB BPSK星座图');
axis([-2 2 -2 2]);
subplot(2,3,6);
plot(real(y2_noisy(:,2)), imag(y2_noisy(:,2)), 'o');
title('6dB BPSK星座图');
axis([-2 2 -2 2]);
figure();
subplot(2,3,1);
plot(real(y3), imag(y3), 'o');
title('16QAM星座图');
axis([-4 4 -4 4]);
subplot(2,3,2);
plot(real(y3_noisy(:,1)), imag(y3_noisy(:,1)), 'o');
title('2dB 16QAM星座图');
axis([-4 4 -4 4]);
subplot(2,3,3);
plot(real(y3_noisy(:,2)), imag(y3_noisy(:,2)), 'o');
title('6dB 16QAM星座图');
axis([-4 4 -4 4]);
```
运行这个代码,你将会得到包含所有星座图的两张图片。