Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
68 lines
2.5 KiB
Matlab
Executable File
68 lines
2.5 KiB
Matlab
Executable File
%% generate iid channel matrices
|
|
M_Tx=4;
|
|
M_Rx=2;
|
|
NFreq=40;
|
|
NFrames=20000;
|
|
SNRdB=10;
|
|
SNR=10^(SNRdB/10);
|
|
K_rice = 2;
|
|
|
|
%% iid channel
|
|
H_iid = randn(M_Rx,M_Tx,NFreq,NFrames)/sqrt(2)+j*randn(M_Rx,M_Tx,NFreq,NFrames)/sqrt(2);
|
|
Cap4x2_iid = capacityEMOS(H_iid,SNR);
|
|
Cap2x2_iid = capacityEMOS(H_iid(:,1:2,:,:),SNR);
|
|
Cap1x1_iid = capacityEMOS(H_iid(1,1,:,:),SNR);
|
|
[Cap4x2_iid_f,Cap4x2_iid_x] = ecdf(Cap4x2_iid(:));
|
|
[Cap2x2_iid_f,Cap2x2_iid_x] = ecdf(Cap2x2_iid(:));
|
|
[Cap1x1_iid_f,Cap1x1_iid_x] = ecdf(Cap1x1_iid(:));
|
|
|
|
%% correlated channel
|
|
H_corr = repmat(H_iid(1,:,:,:),[2,1,1,1]);
|
|
Cap4x2_corr = capacityEMOS(H_corr,SNR);
|
|
[Cap4x2_corr_f,Cap4x2_corr_x] = ecdf(Cap4x2_corr(:));
|
|
|
|
%% rician channel
|
|
% H_LOS = repmat(randn(M_Rx,M_Tx,NFreq)/sqrt(2)+j*randn(M_Rx,M_Tx,NFreq)/sqrt(2),[1,1,1,NFrames]);
|
|
H_LOS = ones(M_Rx,M_Tx,NFreq,NFrames);
|
|
H_Rice = sqrt(K_rice/(1+K_rice)) * H_LOS + sqrt(1/(1+K_rice)) * H_iid;
|
|
Cap4x2_rice = capacityEMOS(H_Rice,SNR);
|
|
%Cap2x2_iid = capacityEMOS(H_iid(:,1:2,:,:),SNR);
|
|
%Cap1x1_iid = capacityEMOS(H_iid(1,1,:,:),SNR);
|
|
[Cap4x2_rice_f,Cap4x2_rice_x] = ecdf(Cap4x2_rice(:));
|
|
%[Cap2x2_iid_f,Cap2x2_iid_x] = ecdf(Cap2x2_iid(:));
|
|
%[Cap1x1_iid_f,Cap1x1_iid_x] = ecdf(Cap1x1_iid(:));
|
|
|
|
%% load the real channel
|
|
%filename_emos = 'data_term1_idx0_20071128_190156.EMOS';
|
|
%[H1,H1_fq,est,gps_data,NFrames] = load_estimates(filename_emos);
|
|
%Cap4x2_meas = capacityEMOS(H1_fq,SNR);
|
|
%load data_term1_idx0_20071128_190156.mat
|
|
%[Cap4x2_meas_f,Cap4x2_meas_x] = ecdf(CAP1(:));
|
|
|
|
%% real channel 2
|
|
%filename_emos = 'data_term1_idx1_20071128_190238.EMOS';
|
|
%[H2,H2_fq,est2,gps_data2,NFrames2] = load_estimates(filename_emos);
|
|
%Cap4x2_meas2 = capacityEMOS(H2_fq,SNR);
|
|
%load data_term1_idx1_20071128_190238.mat
|
|
%[Cap4x2_meas2_f,Cap4x2_meas2_x] = ecdf(CAP1(:));
|
|
|
|
|
|
%% plot results
|
|
figure(78)
|
|
hold off
|
|
semilogy(Cap4x2_iid_x,Cap4x2_iid_f)
|
|
hold on
|
|
semilogy(Cap2x2_iid_x,Cap2x2_iid_f,'r')
|
|
semilogy(Cap1x1_iid_x,Cap1x1_iid_f,'g')
|
|
semilogy(Cap4x2_corr_x,Cap4x2_corr_f,'m')
|
|
semilogy(Cap4x2_rice_x,Cap4x2_rice_f,'k')
|
|
%plot(Cap4x2_meas_x,Cap4x2_meas_f,'k','Linewidth',2)
|
|
%plot(Cap4x2_meas2_x,Cap4x2_meas2_f,'--k','Linewidth',2)
|
|
xlabel('bits/sec/Hz')
|
|
ylabel('CDF')
|
|
title('Capacity')
|
|
legend('SU 4x2 iid','SU 2x2 iid','SU 1x1 iid','SU 4x2 fully correlated','SU 4x2 meas small Rx spacing','SU 4x2 meas large Rx spacing')
|
|
grid on
|
|
|
|
%% store results
|
|
save('cap_iid_rice.mat','-V7','Cap4x2_iid_f','Cap4x2_iid_x','Cap2x2_iid_f','Cap2x2_iid_x','Cap1x1_iid_f','Cap1x1_iid_x','Cap4x2_meas_f','Cap4x2_meas_x','Cap4x2_meas2_f','Cap4x2_meas2_x','Cap4x2_rice_f','Cap4x2_rice_x'); |