生成matlab代码,使用APSK-4调制解调 ,生成随机信息比特序列,计算辐射峰值平均值和方差,生成星座图,以及接收信号到星座的距离
时间: 2023-06-26 18:07:37 浏览: 59
以下是使用MATLAB生成APSK-4调制解调的代码:
% 生成随机信息比特序列
info_bits = randi([0 1], 1, 1000);
% 将比特序列分为I和Q两个分量
I_bits = info_bits(1:2:end);
Q_bits = info_bits(2:2:end);
% 将I和Q分量转换为十进制数
I_decimal = bi2de(reshape(I_bits, 2, length(I_bits)/2).', 'left-msb');
Q_decimal = bi2de(reshape(Q_bits, 2, length(Q_bits)/2).', 'left-msb');
% 星座点坐标定义
r = [1 3 5 7];
theta = [0 pi/2 3*pi/4 pi/4];
I_coord = repmat(r, 1, 4) .* cos(repmat(theta, 1, 4));
Q_coord = repmat(r, 1, 4) .* sin(repmat(theta, 1, 4));
% 星座图绘制
scatter(I_coord, Q_coord, 'filled');
xlim([-8 8]);
ylim([-8 8]);
xlabel('I');
ylabel('Q');
title('APSK-4 Constellation');
% 调制信号生成
mod_signal = zeros(1, length(info_bits)/2);
for i = 1:length(mod_signal)
symbol = I_decimal(i) + 1j*Q_decimal(i);
mod_signal(i) = sum(abs(symbol - r.*exp(1j*theta)).^2 < 2);
end
% 解调信号生成
demod_signal = zeros(1, length(info_bits));
for i = 1:length(demod_signal)/2
demod_signal(2*i-1) = mod_signal(i) == 1 || mod_signal(i) == 4;
demod_signal(2*i) = mod_signal(i) == 2 || mod_signal(i) == 3;
end
% 计算辐射峰值平均值和方差
peak_avg = mean(abs(symbol - r.*exp(1j*theta)).^2);
peak_var = var(abs(symbol - r.*exp(1j*theta)).^2);
% 接收信号到星座的距离计算
distance = abs(symbol - r.*exp(1j*theta));
% 显示结果
disp(['Peak Average: ' num2str(peak_avg)]);
disp(['Peak Variance: ' num2str(peak_var)]);
disp(['Distance to Constellation: ' num2str(distance)]);