⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mimo_de.m

📁 THIS matlab code is STTD
💻 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 + -