📄 mimo_de.m
字号:
% STTD MIMO decoder and demodulator
function [z, R, r_1, r_2] = mimo_de(Rx_1, Rx_2, M, L, bit_n, h_1, h_2, scale)
% z : estimated sysbol
% variable in MIMO
R = zeros(L/bit_n, 1);
%
Rx_11 = Rx_1(1:2:end); % 盲澄 1阑 芭模 圈荐锅掳 单捞磐
Rx_12 = Rx_1(2:2:end); % 盲澄 1阑 芭模 娄荐锅掳 单捞磐
Rx_21 = Rx_2(1:2:end); % 盲澄 2甫 芭模 圈荐锅掳 单捞磐
Rx_22 = Rx_2(2:2:end); % 盲澄 2甫 芭模 娄荐锅犁 单捞磐
%
% % 窍唱狼 救抛唱俊辑 矫埃喊肺 罐绰 荐脚 单捞磐
r_1 = Rx_11+Rx_21;
r_2 = Rx_12+Rx_22;
% estimation data
con_1 = (abs(h_1(1:2:end))).^2+(abs(h_2(2:2:end))).^2;
con_2 = (abs(h_2(2:2:end))).^2+(abs(h_1(1:2:end))).^2;
R(1:2:end, :) = (r_1.*conj(h_1(1:2:end)) + conj(r_2).*h_2(2:2:end))./con_1;
R(2:2:end, :) = (r_1.*conj(h_2(2:2:end)) - conj(r_2).*h_1(1:2:end))./con_2;
%
% % Tx_noisy = awgn(Tx, snr, 'measured');
% % ynoisy = awgn(y, snr, 'measured');
% scale = modnorm(y, 'peakpow', 1);
% % scatterplot(y);
% % scatterplot(R.*scale);
%
%
% % hold on;
% % axis([-1.5 1.5 -1.5 1.5]);
% % hold off;
%
% RR = R./scale;
% b = modem.qamdemod('M', M, 'SymbolOrder', 'Gray');
% z = demodulate(b, RR);
%
z = zeros(L/bit_n, 1);
% rr = (R/scale);
% b = modem.qamdemod('M', M, 'SymbolOrder', 'Gray');
% z = demodulate(b, rr);
a = modem.qammod('M', M, 'SymbolOrder', 'Gray');
y = modulate(a, [0:M-1]);
% scale = modnorm(y, 'avpow', 1);
y = y*scale;
dif_r = zeros(1,M); dif_r(1,:) = 10;
dif_i = zeros(1,M); dif_i(1,:) = 10;
real_v = zeros(1,sqrt(M));
for i=1:length(R)
for j=1:M
dif_r(1,j) = abs(real(R(i,1)) - real(y(1,j)));
end
temp_r = min(dif_r);
g=1;
for k=1:M
if dif_r(1,k)==temp_r;
real_v(1,g)=k;
g=g+1;
end
end
for j=1:sqrt(M)
ccc = real_v(1,j);
dif_i(1,ccc) = abs(imag(R(i,1)) - imag(y(1,(ccc))));
end
temp_i = min(dif_i);
for k=1:M
if dif_i(1,k)==temp_i;
imag_v = k;
end
end
z(i,1) = imag_v-1;
dif_r = zeros(1,M); dif_r(1,:) = 10;
dif_i = zeros(1,M); dif_i(1,:) = 10;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -