不同重数分集下选择式合并输出载噪比累积概率分布曲线matlab仿真代码
时间: 2023-08-21 13:05:46 浏览: 80
以下是一个简单的不同重数分集下选择式合并输出载噪比累积概率分布曲线的MATLAB仿真代码:
```
%% 不同重数分集下选择式合并输出载噪比累积概率分布曲线
clear all; close all; clc;
% 信道参数
SNRdB = 0:2:20; % 信噪比范围
SNR = 10.^(SNRdB/10); % 将信噪比转化为线性单位
N = length(SNR); % 信噪比范围的长度
% 接收机参数
M = 4; % 星座点数
d = sqrt(M)-1; % 星座点之间的距离
threshold = d^2; % 判决门限
% 分集参数
N_t = 2; % 发送天线数
N_r = 2; % 接收天线数
R = [1, 2, 4]; % 不同重数分集
% 仿真参数
numOfBits = 1e6; % 要仿真的比特数
% 仿真
for j=1:length(R)
for i=1:N
% 高斯白噪声
n = randn(N_r, numOfBits);
noise = n./sqrt(SNR(i));
% 发送QPSK符号
data = randi([0, M-1], [R(j)*N_t, numOfBits]);
s = pskmod(data, M);
% 接收
h = (randn(N_r, N_t, numOfBits)+1i*randn(N_r, N_t, numOfBits))/sqrt(2);
r = zeros(N_r, numOfBits);
for k=1:R(j)
r = r + h(:,:,k)*s((k-1)*N_t+1:k*N_t,:) + noise;
end
% 判决
x = r./sqrt(SNR(i));
y = x .* conj(s);
z = sum(y) >= threshold;
% 计算误码率
BER(j,i) = sum(abs(data(:)-(z*3))./2)/numOfBits/length(data);
end
end
% 绘制载噪比累积概率分布曲线
semilogy(SNRdB, BER(1,:), 'r-o', 'LineWidth', 2);
hold on;
semilogy(SNRdB, BER(2,:), 'b-x', 'LineWidth', 2);
semilogy(SNRdB, BER(3,:), 'g-+', 'LineWidth', 2);
grid on;
title('不同重数分集下选择式合并输出载噪比累积概率分布曲线');
xlabel('信噪比 (dB)');
ylabel('误码率');
legend('R=1', 'R=2', 'R=4');
```
这个代码使用了Alamouti编码,但是你可以根据需要进行修改。
阅读全文