[問題] 關於32x64 MMSE ZF detection 間距
我用MATLAB模擬
NT=32、NR=64 uplink MMSE、ZF detection
結果如下圖
https://imgur.com/zZlcIip
模擬環境使用rayleigh flat fading channel
雜訊為AWGN
程式碼如下
clear;
nt = 32; % Number of transmit antenna
nr = 64; % Number of receiving antenna
M = 16; % Size of signal constellation
k = log2(M); % Number of bits per symbol
snr_start = 1;
snr_end = 21;
BER = zeros(1,snr_end);
BER_ZF = zeros(1,snr_end)snr_start = 1;
for iii = snr_start:snr_end
if (M == 4)
QAM = [-1-1i,-1+1i,+1-1i,+1+1i];
Scaling_factor = 2;
if (iii < 36)
n = 100000;
end
end
if (M == 16)
QAM =
[-3-3i,-3-1i,-3+3i,-3+1i,-1-3i,-1-1i,-1+3i,-1+1i,+3-3i,+3-1i,+3+3i,+3+1i,+1-3i,+1-1i,+1+3i,+1+1i];
Scaling_factor = 10;
if (iii < 8)
n = 5000;
end
if (iii >= 8) && (iii < 14)
n = 10000;
end
if (iii >= 14) && (iii < 17)
n = 100000;
end
if (iii >= 17) && (iii < 20)
n = 1000000;
end
if (iii >= 20)
n = 10000000;
end
end
if (M == 64)
QAM=[ -7-7i,-7-5i,-7-1i,-7-3i,-7+7i,-7+5i,-7+1i,-7+3i, ...
-5-7i,-5-5i,-5-1i,-5-3i,-5+7i,-5+5i,-5+1i,-5+3i, ...
-1-7i,-1-5i,-1-1i,-1-3i,-1+7i,-1+5i,-1+1i,-1+3i, ...
-3-7i,-3-5i,-3-1i,-3-3i,-3+7i,-3+5i,-3+1i,-3+3i, ...
+7-7i,+7-5i,+7-1i,+7-3i,+7+7i,+7+5i,+7+1i,+7+3i, ...
+5-7i,+5-5i,+5-1i,+5-3i,+5+7i,+5+5i,+5+1i,+5+3i, ...
+1-7i,+1-5i,+1-1i,+1-3i,+1+7i,+1+5i,+1+1i,+1+3i, ...
+3-7i,+3-5i,+3-1i,+3-3i,+3+7i,+3+5i,+3+1i,+3+3i ];
Scaling_factor = 42;
if (iii < 8)
n = 5000;
end
if (iii >= 8) && (iii < 14)
n = 10000;
end
if (iii >= 14) && (iii < 18)
n = 100000;
end
if (iii >= 18) && (iii < 20)
n = 1000000;
end
if (iii >= 20) && (iii < 22)
n = 10000000;
end
if (iii >= 22)
n = 20000000;
end
end
total_num_BER = 0;
total_num_BER_ZF = 0;
sequential_bits = de2bi(0:length(QAM)-1,k,'left-msb');
for i = 1:n
dataIn=round(rand(nt,k));
dataSymbolsIn = bi2de(dataIn,'left-msb')+1; % Convert to integers
dataMod = QAM(dataSymbolsIn).'; % Gray coding, phase offset = 0
SNR = iii;
signalpower = Scaling_factor*nt;
noisepower = signalpower/(10^((SNR)/10));
noise = (sqrt(noisepower/2))*(randn(nr,1)+1i*randn(nr,1)); % AWGN
H = 1/sqrt(2)*randn(nr,nt)+1/sqrt(2)*1i*randn(nr,nt); % Rayleigh
flat fading channel
receivedSignal = H*dataMod + noise;
powerofpersymbol = Scaling_factor;
W_inv = (H'*H + (noisepower/(powerofpersymbol))*eye(nt))\H'; % MMSE
W_inv_ZF = (H'*H)\H'; % ==pinv(H)
s_hat = W_inv*receivedSignal; % Multiply by decoding matrix after
transmission
s_hat_ZF = W_inv_ZF*receivedSignal;
[~,idxhat] =
min(abs(s_hat*ones(1,length(QAM))-ones(nt,1)*QAM).^2,[],2);
bithat = sequential_bits(idxhat,:);
[num_BER,ratio_BER] = biterr(dataIn,bithat);
total_num_BER = total_num_BER + num_BER;
[~,idxhat_ZF] =
min(abs(s_hat_ZF*ones(1,length(QAM))-ones(nt,1)*QAM).^2,[],2);
bithat_ZF = sequential_bits(idxhat_ZF,:);
[num_BER_ZF,ratio_BER_ZF] = biterr(dataIn,bithat_ZF);
total_num_BER_ZF = total_num_BER_ZF + num_BER_ZF;
end
BER(iii) = total_num_BER/(n*nt*k); % 64-QAM nt*k=4*6=24
BER_ZF(iii) = total_num_BER_ZF/(n*nt*k);
end
snr = snr_start : snr_end;
semilogy(snr,BER(snr),'Color',[0 0 0.7],'Marker','*'); grid on;
hold on;
semilogy(snr,BER_ZF(snr),'Color',[0.7 0 0],'Marker','*');
title([num2str(nt),'x',num2str(nr),' ',num2str(M),'-QAM']);
legend('MMSE','Zero-Forcing');
xlabel('SNR(dB)');
y=ylabel('BER');
set(get(gca,'YLabel'),'Rotation',0);
set(y,'Units','Normalized','Position', [-0.06, 0.5]);
set(gca,'fontsize',16,'xtick',snr_start:snr_end);
axis([snr_start snr_end 10^(-6) 1]);
set(gcf, 'InvertHardCopy', 'off'); % Figure background color when printing
or saving
pause;
close;
因為這兩條線實在是太靠近了,想詢問一下有人知道這樣模擬是正確的嗎?
如果是正確的,要如何用數值證明兩條線這個間距是合理的??
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.106.109 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/comm_and_RF/M.1563422036.A.B68.html
推
07/19 10:11,
4年前
, 1F
07/19 10:11, 1F
→
07/19 10:11,
4年前
, 2F
07/19 10:11, 2F
推
07/19 10:14,
4年前
, 3F
07/19 10:14, 3F
→
07/19 10:14,
4年前
, 4F
07/19 10:14, 4F
→
07/20 04:08,
4年前
, 5F
07/20 04:08, 5F
→
07/20 04:08,
4年前
, 6F
07/20 04:08, 6F
→
07/20 04:08,
4年前
, 7F
07/20 04:08, 7F
推
07/20 09:09,
4年前
, 8F
07/20 09:09, 8F
→
07/21 04:29,
4年前
, 9F
07/21 04:29, 9F
推
07/23 16:27,
4年前
, 10F
07/23 16:27, 10F