📄 mmse_mimo.m
字号:
% simulate the BER of a QPSK signal using Rayleigh fading channel
% with sigma = fading_sigma
% pxq MIMO
clear;
N_loop = 10^4;
N_sym = 64;
N_bit = 2*N_sym;
noise_sigma = sqrt(0.5);
Eb_dB = 4:4:28;
Eb = 10.^(Eb_dB/10);
sqrt_Es = sqrt(2*Eb);
BER = zeros(1, length(Eb));
normalized = 1/sqrt(2);
p = 3;
q = 3;
for n = 1:N_loop;
H = randn(q,p)+j*randn(q,p);
h = normalized*H/(sqrt(p));
for i = 1:7; %SNR
for k = 1:p;
D = floor(2*rand(1,N_sym))+j*floor(2*rand(1,N_sym));
Tx_data(k,:) = 2*D-(1+j);
Tx_D(k,:) = D;
end;
Tx_data = normalized*Tx_data;
for k = 1:q;
Noise(k,:) = noise_sigma*(randn(1,N_sym)+j*randn(1,N_sym));
end;
Rx_data = h*Tx_data*sqrt_Es(1,i) + Noise;
load('gaussian')
%--------------Parameter Initilization---------
kernel='gaussian';
%c=-20:10;
c=0;
%sigma=-3:1:3;
sigma=sqrt(0.5);
%---------------SVM Training Procedure----------
for jj=1:length(c)
for ii=1:length(sigma)
kerneloption=10^sigma(ii);
regoption=10^c(ii);
flen=size(tr_data,2);
tic
[errorsvm(ii),fval]=SVM(tr_data,tr_target,te_data,te_target,'diagc',kernel,kerneloption,regoption);
toc
end
end
% r = conj(h)*transpose(h)+(1/Eb(1,i))*eye(q);
% for k = 1:p;
% w1(:,k) = inv(r)*conj(h(:,k));
% end;
% w = transpose(w1);
% y = w*Rx_data;
% Recov_data = 0.5*(1+j+sign(real(y))+j*sign(imag(y)));
% BER(1,i) = BER(1,i)+sum(sum((abs(Recov_data-Tx_D)).^2))/(N_bit*p);
end;
end;
BER = BER/N_loop;
save mimo_fading_qpsk_parameter Eb_dB BER;
semilogy(Eb_dB, BER, 'k--');
xlabel('Eb/N0 (dB)');
ylabel('BER');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -