📄 vblast_decoder_mmse_ic.m
字号:
function decoder_output_demodu = vblast_decoder_MMSE(H,decoder_input,index,SNR)
% H : the channel matrix
% the receiver know the channel perfectly
% decoder_input :signal passed channel with noise polluted
% index : the modulation index 1,2,4,6
%-----------------------------------------------------
[Rx_n,Tx_n] = size(H);
if Rx_n < Tx_n
disp_str = ['error!!!---the Rx_n must no less than Tx_n'];
disp(disp_str);
return;
end
frame_length = length(decoder_input);
decoder_output = zeros(Tx_n,frame_length);
y = zeros(Tx_n,frame_length);
if SNR>50
delta2 = 0;%noise free
else
delta2 = 1/(10^(SNR/10));
end
%In =i_matrix(Tx_n);
r = decoder_input;
%ord = 1: Tx_n;
%tic;
for t = Tx_n:-1:1
%get the linear combination coefficients matrix
In = eye(t);
WH = pinv(H'*H +delta2*In)*H';%
y(t,:) = WH(t,:)*r;
%decoder_output(line_num,:) = y(line_num,:);
decoder_output(t,:) = modulation(demodulation(y(t,:), index),index);
r = r - H(:,t)*decoder_output(t,:);
H(:,t) = [];
end
%toc;
for t = 1:Tx_n
decoder_output_demodu(t,:) = demodulation(decoder_output(t,:), index);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -