Professional Documents
Culture Documents
Kol
Kol
CDMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CDMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DS-CDMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DS-CDMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DS-CDMA
.. . . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . MAI
. . . . . . . . . . . . . . . . . . . . . . . . . . . . DS-CDMA
.. BER BPSK/DS-CDMA . . .
.. BER BPSK/DS-CDMA
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . .
..
. . . . . . . . . . . . . .
..
. ). . . . . . . . . . . . . . . . . . . (Encoding
. ). . . . . . . . . . . . . . . . . . . (Population
. ). . . . . . . . . . . . . . . (Fitness function
. . . . . . . . . . . . . . . . . . . . . . . . .
.. )(Roulette Wheel Selection
.. ). . . . . (Elitism Selection
. ). . . . . . . . . . . . . . . . . (Crossover
.. . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . .
. ). . . . . . . . . . . . . . . . . . (Mutation
.. . . . . . . . . . . . . .
. ). . . . . . . . . . . . . . . . . . . . (Replace
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
MC-CDMA
Annealing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MC-CDMA
.. . . . . . . . . . . . . . . . . . . . MC-CDMA
.. . . . . . . . . . . . . . . . . . MC-CDMA
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . GA
.. . . . . . . . . . . . . . . . . . . .
.. )( . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.. . . . . . . . . . . . . . . MC-CDMA
.. MC-CDMA . . . . . . . .
.. BER . MRC
.. DFT
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . MC-CDMA .
. . . . . MC-CDMA in Rayleigh Channel Single User .
. . . . . . . . . . . MC-CDMA in Rayleigh Channel .
Estimation and Multi-user Detection for MC-CDMA .
. . . . . . . . . . . . System Using Genetic Algorithm
. . . . . . MSE (N=4)of various estimation schemes .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
Joint Channel
. . . . . . . . .
. . . . . . . . .
CDMA
.
CDMA
.
.
.
.
TDMA , OFDM . OFDM
TDMA
. .
CDMA .
.
.
MAI .
.
.
:. CDMA
MAI CDMA .
. spreading code
.
))(Spread Spectrum Multiple Access (SSMA
CDMA .
. CDMA .
. CDMA
DS-CDMA
.
. CDMA )) (frequency hopping CDMA (FH-CDMA
.
. FH CDMA jamming
FH CDMA. (Slow Frequency Hopping) SFH (Fast Frequency
Hopping) FFH . FFH
SFH
. CDMA TH-CDMA
.
.
CDMA . hybrid
CDMA .
CDMA .
CDMA MC-
. MC-CDMA
TDMA , FDMA .
CDMA , FDMA , TDMA .
.
FDMA TDMA CDMA
) (ISI .
CDMA
.
) (fading
.
CDMA -
- .
. .
MAI
CDMA
.
.
. CDMA
DS-CDMA .
:.
DS-CDMA k
. . despreading
.
DS-CDMA
CDMA . .
k k=1,2,...,K. . BPSK
. ) dk (t
) ck (t . .
. .
Q chip .
k-1 .
DS-CDMA
k k ) ck (t
.
. . .
)(.
rad
wc
sec
. DS-CDMA
k k-1
. . .
) . SS (BS
)(.
) sk (t k
k=
= )r(t
uplink
:. PSD
despred
. . PSD PSD
. despresd
T
.
Tc
Tc
Tc .
chip
k k . .
..
)(.
) (K = . :
) r(t) = s (t )c (t )cos(wc t +
= wc .
despread .
)(.
. ).
( .
correlator
) (. correlator .
)(.
t +T
= z
T .
= ) = sb (t
.
)sb (t) = Ad (t)c (t) cos(wc t
)(.
. . ) ( =
.
d (t)c (t)[cos (wc t) + ]dt
)(.
t +T
t +T
= z
)(.
t +T
= z
)(.
z =
. ) :( =
Ad (t )c (t )c (t ) cos(wc t + ) cos(wc t + + )dt
)(.
Ad (t )c (t )c (t ) cos()dt
t +T
t
t +T
= z
])[cos(A + B) + cos(A B
] [cos[(wc t + ) + correlator .
d (t ) = :
= cos A cos B .
)(.
)cos()Rcc (
) Rcc (
)(.
c (t )c (t )dt =
t +T
)cos(
) c (t .
T
= )Rcc (
)c ( )c (
z =
Rcc . | .
..
| SNR BER .
Rcc BER .
MAI
) (k > .
= )r(t
k=
k = . ) r(t ) c (t )d (t
. K ) c (t
.
)(.
) sk (t k )c (t
k=
= )sb (t
correlator . correlator
.
sk (t k )c (t ) cos(wc t + )dt
k=
) [s (t )c (t ) + s (t )c (t
)(.
t +T
t
t +T
+ . . . + sk (t k )c (t )] cos(wc t + )dt
= z
k = =
sk (t)c (t) cos(wc t)dt
Adk (t)ck (t)c (t) cos (wc t)dt
k=
K
t
t +T
k=
K
k=
= z
t +T
t +T
t
t +T
=
=
) cos(wc t .
)(.
for i = j
for i = j
= ci (t)cj (t)dt
. d (t) =
c (t) = T
:
AT
)(.
z =
.
. (
ci (t )ci (t) =
) ( .( = . .
MAI .
T
for i = j
= ci (t)cj (t)dt
)(.
= Rij = for i
j
:
[d (t)c (t) + d (t)c (t)c (t) + . . . + dk (t)ck (t)c (t)]dt
t +T
= )z (t
A
] = [T T R . . . T RK
)(.
MAI .
DS-CDMA
P . Eb = A T = P T
). .(BPSK
R .
T chip Tc .T = QTc
. chip
.
K .
K .
K .
:.
DS-CDMA .
k . . despread
.
..
BER BPSK/DS-CDMA
AWGN MAI K
. .
. ) r(t K
. k .
AWGN :
)(.
)(.
)P dk (t k + n(t
= )r(t
k=
z correlator .
T
= z
r(t)c (t t )dt
= c .
. ( = = ) :
r(t)c (t)dt
K
]
[
P d (t)c (t) +
P dk (t k )ck (t k )c (t) + n(t)c (t) dt
= z
k=
)(.
=D + I +
n(t) .
) ( D . .
T
= D
P d (t)c (t)dt
)(.
c (t) = d (t) = :
D = P T
)(.
n(t) AWGN.
T
)(.
n(t)c (t)dt
. ] var[ .
]
n(u)c (u)du
)(.
] var[] =E[
[ T
=E
n(t)c (t)dt
) n(t :
)(.
)(t u
= ])E[n(t)n(u
] var[ :
N T
N T
= (t u)c (t)c (u)dtdu
= c (u)du
)(.
= ]var[
I . MAI .
T
)(.
dk (t k )ck (t k )c (t)dt
=I
k=
k . I
. I
.
)(.
T
= ]T = QTc var[I
(k )P
(k )P
QTc
= P
K
QTc
k=
= ]var[I
SNR ) (.
D
]var[] + var[I
[
]
PT
SNRo = N T
T
+ Q (k )P
[ N T
]
T
(k )P
=
+
PT
PT
]
[
N
k
+
=
Eb
Q
)(.
= SNRo
)(.
MAI
Eb
N
SNR .
SNR K Q . K Q
CCL ) (
] K = = Q [.
..
BER BPSK/DS-CDMA
.
over sampling .
CDMA TDMA .
. BER
.
z
z = D + I + D .
:
D = P T
:
N T
= ]var[
I.
)(.
k ck (t)c (t)dt
k :
)(.
ck (t)c (t)dt
ck (t)c (t)dt
T
K
T
k=
=I
.
P dk (t)ck (t)c (t)dt = P
= Ik
k .
T
ck (t)c (t)dt = Rk, T
)(.
P Rk, T
)(.
= Ik
SI I k :
K
[ K
K
]
= SI
= Ik
P Rk, T = P T
Rk,
)(.
k=
k=
k=
:
)(.
)(.
D
var[] + SI
]
[
PT
SNRo = N T
K
+
P
T
k= Rk,
K
[ N T
]
k= Rk,
=
+
PT
PT
= SNRo
P Eb = P T .:
[
]
K
= SNRo
+
Rk,
)(.
) (Eb /N
k=
.
.
) (
..
.
.
. .
..
.
.
.
.
)
)
. )(Encoding
)(
].[13KHODAM , 10,11,13 OF 12 KHODAM
... ) (
. .
. .
:.
. .
:.
)(Population
. .
.
.
.
.
)(Fitness function
.
.
.
.
.
..
. .
:.
..
)(Elitism Selection
)(Crossover
.
)( .
:
..
. . .
:.
..
. . .
:.
..
. .
.
:.
)(Mutation
.
.
.
.
. . .
..
.
.
:.
)(Replace
.
.
. .
:. .
MC-CDMA
Annealing
:
MC-CDMA ) (MAI
.
) (GA
. GA
GA
SAM - GA ) (SA .
SAM - GA .
SAM - GA . SAM - GA
) (MSE ) (BER
CIR MC-CDMA
.
:
MC-CDMA
) (GA
annealing
.
. MC-CDMA ) (OFDM ) (CDMA
MC-CDMA
OFDM CDMA .
) (MAI
.
MAI
MC-CDMA.
) (MUD
MAI . MAI
) Verdu (BER
) (OMUD
likelihood
.
OMD
BER . OMD
.
MUD
) (GA OMUD
. .
][ ) (SD V - BLAST .
OFDM . ] [
CIR DS - CDMA .
A/D
CIR GA CIR .
GA CIR MIMO OFDM CDMA
[ ] .
GA CDMA MIMO OFDM
GA MC-CDMA
. GA MC-CDMA
. GA
GA SAM - GA
) (SA .
SAM - GA . SAM - GA .
SAM - GA CIR
MC-CDMA.
:. MC-CDMA
. MC-CDMA
..
MC-CDMA
. MC-CDMA u .
P / :
P
= du
) bup (i)ps (t iTs
)(.
i= p=
Nc
SF
= SF P NC bup (i)
P i u Ps (t)
Ts.
/ SF
. NC ) (IFFT
/ .
. u
:
)(.
P
SF
= )su (t
i= p= n=
:. MC-CDMA
) glu (t)(t l
)(.
= ) hu (t;
l=
l l glu l u . .
.
)hu (t; )d + n(t
)(.
) su (t
= )r(t
u=
N
P
SF
u= i= p= n=
FFT Pn + p :
N
)(.
= )rPn +p (n
au (n)HPun +p bup + n
u=
n = nI + jnQ nQ nI n quadrature
.
MRC SINR . . MRC P
u :
)(.
)u (n)rP n+p (n
SF
n=
= Dpu
:. MC-CDMA
)(.
..
MC-CDMA
MC-CDMA .
. TDD - CDMA
uplink
.
] [ OFDM uplink
. MC-CDMA
. . . MC-CDMA .
CIR signicant
taps
:. MC-CDMA
GA
. MC-CDMA GA
.
CIR . i , i = , , , N
. h
MRC CIR .
bi , i = , , , N . CIR
GA .
:. MC-CDMA GA
..
BPSK :
] bb = [bb , bb , , bbN
)(.
)(.
b J
hi = [b
hi , b
hi , , b
i CIR ] hiN
.
)(
..
GA .
:
) (I
MRC Np
:
.
Np
GA MRC .
Np
Np
)(
)(
)CIR (II
CIR .
. CIR
GA (NP ) . CIR
.
CIR . p
p p CIR.
..
) (ML . i ] b = [b , b , , bN
= [h
, h
, , h
] N
h GA :
SF
=
bu (i)H
u (i)au (n)]
)C(b, h
[rP n+p (i)
)(.
p
P n+p
u=
n=
..
) (roulette wheel ranking-based
) (crossover .
.
.
.
. :
) (INp .
.
) (II p .
)p
Np
p=
..
((Np p + )/
..
CIR .
CIR J
. real-coded CIR
C . A
A .
)(.
..
], [ ,
c = + j ,
A = A + C
. .
.
..
GA ) .. ( ) ..
( .
.
MATLAB .
N =
. .
..
MC-CDMA
:. MC-CDMA
..
MC-CDMA
:. MC-CDMA
..
BER
MRC
BER :.
..
DFT
:. DFT
GA (MSE)
) (BER CIR
MC-CDMA .
MC-CDMA
%%MC-CDMA simulink for obtain BER of User1 & User2 & User3 & User4
% Author: Salman Poozesh &
%%
clear;clc;
disp('Please Wait...');
Users = 4;
% Number of Users
N = 10^4;
%%
Data_Users
n = 4;
% Number of
Data Sub-Carriers
walsh = hadamard(n);
Code1 = walsh(1,:);
Code2 = walsh(2,:);
Code3 = walsh(3,:);
Code4 = walsh(4,:);
%%
Data_User1 = rand(1,N)>0.5;
Data_User11 = Data_User1_BPSK';
spData1_User1 = Data_User11 * Code1;
spData12 = (spData1_User1)';
Ifft_Data_User1 = ifft(spData12);
Ifft_Data12 = Ifft_Data_User1';
%%
Data_User2 = rand(1,N)>0.5;
Data_User21 = Data_User2_BPSK';
spData2 = Data_User21 * Code2;
spData22 = (spData2)';
Ifft_Data_User2 = ifft(spData22);
Ifft_Data22 = Ifft_Data_User2';
%%
Data_User3 = rand(1,N)>0.5;
Data_User3_BPSK = 2 * Data_User3 - 1;
%%
Data_User31 = Data_User3_BPSK';
spData3 = Data_User31 * Code3;
spData32 = (spData3)';
Ifft_Data_User3 = ifft(spData32);
Ifft_Data32 = Ifft_Data_User3';
%%
Data_User4 = rand(1,N)>0.5;
Data_User41 = Data_User4_BPSK';
spData4 = Data_User41 * Code4;
spData42 = (spData4)';
Ifft_Data_User4 = ifft(spData42);
Ifft_Data42 = Ifft_Data_User4';
%%
Data_channel = x;
%%
Data_noise1 = Data_channel(:);
Data_noise2 = reshape(Data_noise1,1,length(Data_noise1));
noise = 1 / sqrt(2) * [randn(1,length(Data_noise2))
+ j * randn(1,length(Data_noise2))];
snr = [0:20];
% Multiple Eb / N0 Values
for K = 1:21
y = Data_noise2 + (sqrt(1) * 10^( - snr(K) / 20)) * noise;
%%
Receiver
received_Data = y;
%%
%Addition of Noise
Taking FFT
fft_received_Data = fft(rx14);
%%
Despreading
%%
recData12 = real(recData11)>0;
errors_User1(K) = size(find(Data_User1 - recData12),2);
SBer1 = errors_User1 / N;
%%
recData22 = real(recData21)>0;
errors_User2(K) = size(find(Data_User2 - recData22),2); % Errors for User2
SBer2 = errors_User2 / N;
%%
recData32 = real(recData31)>0;
errors_User3(K) = size(find(Data_User3 - recData32),2); % Errors for User3
SBer3 = errors_User2 / N;
%%
recData42 = real(recData41)>0;
errors_User4(K) = size(find(Data_User4 - recData42),2); % Errors for User4
SBer4 = errors_User4 / N;
end
%%
Displaying Result
semilogy(snr,SBer1,'r','LineWidth',2);
hold on;
semilogy(snr,SBer2,'y','LineWidth',2);
hold on;
semilogy(snr,SBer3,'g','LineWidth',2);
hold on;
semilogy(snr,SBer4,'b','LineWidth',2);
axis([0 20 10^-5 0.5]);
grid on;
title('MC-CDMA,BER Vs Eb/No');
legend('Simulated BER for User1','Simulated BER for User2','Simulated BER for User3'
,'Simulated BER for User4');
ylabel('BER');xlabel('Eb/No, dB');
clc;
%%
clc;clear;
disp('Please Wait...');
Users = 4;
% Number of Users
N = 10^4;
%%
Data_Users
n = 4;
% Number of
Data Sub-Carriers
walsh = hadamard(n);
Code1 = walsh(1,:);
%%
Data_User1 = rand(1,N)>0.5;
Data_User11 = Data_User1_BPSK';
spData1_User1 = Data_User11 * Code1;
spData12 = (spData1_User1)';
Ifft_Data_User1 = ifft(spData12);
Ifft_Data12 = Ifft_Data_User1';
%%
x = tx_User1;
%%
Taps = 4;
% Number of Taps
p1 = 0.5 / 2.3;
% Power of Tap1
p2 = 0.9 / 2.3;
% Power of Tap2
p3 = 0.7 / 2.3;
% Power of Tap3
p4 = 0.2 / 2.3;
% Power of Tap4
x11 = x(:);
x12 = reshape(x11,1,length(x11));
i = 1:length(x12);
delay1 = 1;
delay2 = 2;
delay3 = 3;
x13 = circshift(x12,[1 delay1]);
x15 = circshift(x12,[1 delay3]);
Data_noise1 = Data_channel(:);
Data_noise2 = reshape(Data_noise1,1,length(Data_noise1));
noise = 1 / sqrt(2) * [randn(1,length(Data_noise2))
+ j * randn(1,length(Data_noise2))];
snr = [0:20];
% Multiple Eb / N0 Values
for K = 1:21
y = Data_noise2 + (sqrt(1) * 10^( - snr(K) / 20)) * noise;
%%
Receiver
received_Data = y;
%%
%Addition of Noise
rx14 = rx13';
%%
Taking FFT
fft_received_Data = fft(rx14);
%%
Channel Estimation
channel_response=fft([gain1;gain2;gain3;gain4],n);
data_equilized=fft_received_Data.*conj(channel_response);
recData11 = (data_equilized' * Code1')';
%%
recData12 = real(recData11)>0;
errors_User1(K) = size(find(Data_User1 - recData12),2); % Errors for User1
SBer1 = errors_User1 / N;
end
%%
Displaying Result
semilogy(snr,SBer1,'g','LineWidth',2.5);
axis([0 20 10^-5 10^0]);
grid on;
title('MC-CDMA in Rayleigh Channel for Single User,BER Vs Eb/No');
legend('Simulated BER for Single User');
ylabel('BER');xlabel('Eb/No, dB');
clc;
%%MC-CDMA simulink in Rayleigh Channel for obtain BER of User1 & User2 & User3 & User4
% Author: Salman Poozesh & Javad Saber
% Data Modified: March 2012
%%
clear;clc;
disp('Please Wait...');
Users = 4;
% Number of Users
N = 10^4;
%%
Data_Users
n = 4;
% Number of
Data Sub-Carriers
walsh = hadamard(n);
Code1 = walsh(1,:);
Code2 = walsh(2,:);
Code3 = walsh(3,:);
Code4 = walsh(4,:);
%%
Data_User1 = rand(1,N)>0.5;
Data_User11 = Data_User1_BPSK';
spData1_User1 = Data_User11 * Code1;
spData12 = (spData1_User1)';
Ifft_Data_User1 = ifft(spData12);
Ifft_Data12 = Ifft_Data_User1';
%%
Data_User2 = rand(1,N)>0.5;
Data_User21 = Data_User2_BPSK';
spData2 = Data_User21 * Code2;
spData22 = (spData2)';
Ifft_Data_User2 = ifft(spData22);
Ifft_Data22 = Ifft_Data_User2';
%%
Data_User3 = rand(1,N)>0.5;
Data_User3_BPSK = 2 * Data_User3 - 1;
%%
Data_User31 = Data_User3_BPSK';
spData3 = Data_User31 * Code3;
spData32 = (spData3)';
Ifft_Data_User3 = ifft(spData32);
Ifft_Data32 = Ifft_Data_User3';
%%
Data_User4 = rand(1,N)>0.5;
Data_User41 = Data_User4_BPSK';
spData4 = Data_User41 * Code4;
spData42 = (spData4)';
Ifft_Data_User4 = ifft(spData42);
Ifft_Data42 = Ifft_Data_User4';
%%
%%
Taps = 4;
% Number of Taps
p1 = 0.5 / 2.3;
% Power of Tap1
p2 = 0.9 / 2.3;
% Power of Tap2
p3 = 0.7 / 2.3;
% Power of Tap3
p4 = 0.2 / 2.3;
% Power of Tap4
x11 = x(:);
x12 = reshape(x11,1,length(x11));
i = 1:length(x12);
delay1 = 1;
delay2 = 2;
delay3 = 3;
x13 = circshift(x12,[1 delay1]);
ch3 = repmat(gain3,(n + 3),1);
ch4 = repmat(gain4,(n + 3),1);
Data_channel = x .* ch1 + x1 .* ch2 + x2 .* ch3 + x3 .* ch4;
% Passing Data through channel
%%
Data_noise1 = Data_channel(:);
Data_noise2 = reshape(Data_noise1,1,length(Data_noise1));
noise = 1 / sqrt(2) * [randn(1,length(Data_noise2))
+ j * randn(1,length(Data_noise2))];
snr = [0:20];
% Multiple Eb / N0 Values
for K = 1:21
y = Data_noise2 + (sqrt(1) * 10^( - snr(K) / 20)) * noise;
%%
Receiver
received_Data = y;
%%
%Addition of Noise
Taking FFT
fft_received_Data = fft(rx14);
%%
Channel Estimation
channel_response=fft([gain1;gain2;gain3;gain4],n);
data_equilized=fft_received_Data.*conj(channel_response);
recData11 = (data_equilized' * Code1')';
recData21 = (data_equilized' * Code2')';
recData31 = (data_equilized' * Code3')';
recData41 = (data_equilized' * Code4')';
%%
recData12 = real(recData11)>0;
errors_User1(K) = size(find(Data_User1 - recData12),2); % Errors for User1
SBer1 = errors_User1 / N;
%%
recData22 = real(recData21)>0;
errors_User2(K) = size(find(Data_User2 - recData22),2); % Errors for User2
SBer2 = errors_User2 / N;
%%
recData32 = real(recData31)>0;
errors_User3(K) = size(find(Data_User3 - recData32),2); % Errors for User3
SBer3 = errors_User2 / N;
%%
recData42 = real(recData41)>0;
errors_User4(K) = size(find(Data_User4 - recData42),2); % Errors for User4
SBer4 = errors_User4 / N;
end
%%
Displaying Result
semilogy(snr,SBer1,'r','LineWidth',2);
hold on;
semilogy(snr,SBer2,'y','LineWidth',2);
hold on;
semilogy(snr,SBer3,'g','LineWidth',2);
hold on;
semilogy(snr,SBer4,'b','LineWidth',2);
axis([0 20 10^-5 10^0]);
grid on;
title('MC-CDMA in Rayleigh Channel,BER Vs Eb/No');
hleg=legend('Simulated BER for User1','Simulated BER for User2'
,'Simulated BER for User3','Simulated BER for User4');
set(hleg,'FontAngle','italic','TextColor',[.3 .2 .1])
ylabel('BER');xlabel('Eb/No, dB');
clc;
% Number of Users
N = 10^4;
Ip = (1:8:N);
% position of Pilots
%%
Data_Users
n = 4;
% Number of
Data Sub-Carriers
walsh = hadamard(n);
Code1 = walsh(1,:);
Code2 = walsh(2,:);
Code3 = walsh(3,:);
Code4 = walsh(4,:);
%%
Data_User1 = rand(1,N)>0.5;
%%
Data_User11 = Data_User1_BPSK';
spData1_User1 = Data_User11 * Code1;
spData12 = (spData1_User1)';
Pilot_User1 = rand(4,length(Ip))>0.5; % Generating Pilot for User1
Pilot_User1 = 2 * Pilot_User1 - 1;
for i = 1:4
spd(i,:) = AddC(spData12(i,:),Pilot_User1(i,:),Ip);
end
spData12 = spd;
IFFTData_User1 = ifft(spData12);
IFFTData12 = IFFTData_User1';
%%
Data_User2 = rand(1,N)>0.5;
Data_User21 = Data_User2_BPSK';
spData2 = Data_User21 * Code2;
spData22 = (spData2)';
Pilot_User2 = rand(4,length(Ip))>0.5; % Generating Pilot for User1
Pilot_User2 = 2 * Pilot_User2 - 1;
for i = 1:4
spd(i,:) = AddC(spData22(i,:),Pilot_User2(i,:),Ip);
end
spData22 = spd;
IFFTData_User2 = ifft(spData22);
IFFTData22 = IFFTData_User2';
%%
Data_User3 = rand(1,N)>0.5;
Data_User3_BPSK = 2 * Data_User3 - 1;
%%
Data_User31 = Data_User3_BPSK';
spData3 = Data_User31 * Code3;
spData32 = (spData3)';
Pilot_User3 = rand(4,length(Ip))>0.5; % Generating Pilot for User3
Pilot_User3 = 2 * Pilot_User3 - 1;
for i = 1:4
spd(i,:) = AddC(spData32(i,:),Pilot_User3(i,:),Ip);
end
spData32 = spd;
IFFTData_User3 = ifft(spData32);
IFFTData32 = IFFTData_User3';
%%
Data_User4 = rand(1,N)>0.5;
Data_User41 = Data_User4_BPSK';
spData4 = Data_User41 * Code4;
spData42 = (spData4)';
Pilot_User4 = rand(4,length(Ip))>0.5; % Generating Pilot for User4
Pilot_User4 = 2 * Pilot_User4 - 1;
for i = 1:4
spd(i,:) = AddC(spData42(i,:),Pilot_User4(i,:),Ip);
end
spData42 = spd;
IFFTData_User4 = ifft(spData42);
IFFTData42 = IFFTData_User4';
%%
tx_User4 = transData4;
%%
Taps = 4;
% Number of Taps
p1 = 0.5 / 2.3;
% Power of Tap1
p2 = 0.9 / 2.3;
% Power of Tap2
p3 = 0.7 / 2.3;
% Power of Tap3
p4 = 0.2 / 2.3;
% Power of Tap4
x14 = circshift(x12,[1 delay2]);
Data_noise1 = Data_channel(:);
Data_noise2 = reshape(Data_noise1,1,length(Data_noise1));
noise = 1 / sqrt(2) * [randn(1,length(Data_noise2))
+ j * randn(1,length(Data_noise2))];
snr = [0:20];
% Multiple Eb / N0 Values
for K = 1:21
y = Data_noise2 + (sqrt(1) * 10^( - snr(K) / 20)) * noise;
%%
Data_Received = y;
%%
%Addition of Noise
Receiver
% Fadded Data Received With Awgn Noise
Removing Cyclic Prefix
rx13 = rx12(:,[(4:(n + 3))]);
rx14 = rx13';
%%
Taking FFT
FFT_Data_Received = fft(rx14);
%%
Extract Pilots
Pilot_Received = FFT_Data_Received(:,Ip);
FFT_Data_Received(:,Ip) = [];
%%
BER of User1
RecData12 = real(RecData11)>0;
errors_User1(K) = size(find(Data_User1 - RecData12),2)
SBer1 = errors_User1 / N;
%%
BER of User2
RecData22 = real(RecData21)>0;
errors_User2(K) = size(find(Data_User2 - RecData22),2); % Errors for User2
SBer2 = errors_User2 / N;
%%
BER of User3
RecData32 = real(RecData31)>0;
errors_User3(K) = size(find(Data_User3 - RecData32),2); % Errors for User3
SBer3 = errors_User2 / N;
%%
BER of User4
RecData42 = real(RecData41)>0;
errors_User4(K) = size(find(Data_User4 - RecData42),2); % Errors for User4
SBer4 = errors_User4 / N;
end
%%
Displaying Result
semilogy(snr,SBer1,'r','LineWidth',2);
hold on;
axis([0 20 10^-5 10^0]);
grid on
legend('Single user bound','MRC N=4','GA(Roulette Wheel) N=4');
% Number of Users
N = 10^4;
Ip = (1:8:N);
% position of Pilots
%%
Data_Users
n = 4;
% Number of
Data Sub-Carriers
walsh = hadamard(n);
Code1 = walsh(1,:);
Code2 = walsh(2,:);
Code3 = walsh(3,:);
Code4 = walsh(4,:);
%%
Data_User1 = rand(1,N)>0.5;
%%
Data_User11 = Data_User1_BPSK';
spData1_User1 = Data_User11 * Code1;
spData12 = (spData1_User1)';
Pilot_User1 = rand(4,length(Ip))>0.5; % Generating Pilot for User1
Pilot_User1 = 2 * Pilot_User1 - 1;
for i = 1:4
spd(i,:) = AddC(spData12(i,:),Pilot_User1(i,:),Ip);
end
spData12 = spd;
IFFTData_User1 = ifft(spData12);
IFFTData12 = IFFTData_User1';
%%
Data_User2 = rand(1,N)>0.5;
Data_User21 = Data_User2_BPSK';
spData2 = Data_User21 * Code2;
spData22 = (spData2)';
Pilot_User2 = rand(4,length(Ip))>0.5; % Generating Pilot for User1
Pilot_User2 = 2 * Pilot_User2 - 1;
for i = 1:4
spd(i,:) = AddC(spData22(i,:),Pilot_User2(i,:),Ip);
end
spData22 = spd;
IFFTData_User2 = ifft(spData22);
IFFTData22 = IFFTData_User2';
%%
Data_User3 = rand(1,N)>0.5;
Data_User3_BPSK = 2 * Data_User3 - 1;
%%
Data_User31 = Data_User3_BPSK';
spData3 = Data_User31 * Code3;
spData32 = (spData3)';
Pilot_User3 = rand(4,length(Ip))>0.5; % Generating Pilot for User3
Pilot_User3 = 2 * Pilot_User3 - 1;
for i = 1:4
spd(i,:) = AddC(spData32(i,:),Pilot_User3(i,:),Ip);
end
spData32 = spd;
IFFTData_User3 = ifft(spData32);
IFFTData32 = IFFTData_User3';
%%
Data_User4 = rand(1,N)>0.5;
Data_User41 = Data_User4_BPSK';
spData4 = Data_User41 * Code4;
spData42 = (spData4)';
Pilot_User4 = rand(4,length(Ip))>0.5; % Generating Pilot for User4
Pilot_User4 = 2 * Pilot_User4 - 1;
for i = 1:4
spd(i,:) = AddC(spData42(i,:),Pilot_User4(i,:),Ip);
end
spData42 = spd;
IFFTData_User4 = ifft(spData42);
IFFTData42 = IFFTData_User4';
%%
tx_User4 = transData4;
%%
Taps = 4;
% Number of Taps
p1 = 0.5 / 2.3;
% Power of Tap1
p2 = 0.9 / 2.3;
% Power of Tap2
p3 = 0.7 / 2.3;
% Power of Tap3
p4 = 0.2 / 2.3;
% Power of Tap4
x14 = circshift(x12,[1 delay2]);
Data_noise1 = Data_channel(:);
Data_noise2 = reshape(Data_noise1,1,length(Data_noise1));
noise = 1 / sqrt(2) * [randn(1,length(Data_noise2))
+ j * randn(1,length(Data_noise2))];
snr = [0:20];
% Multiple Eb / N0 Values
for K = 1:21
y = Data_noise2 + (sqrt(1) * 10^( - snr(K) / 20)) * noise;
%%
Data_Received = y;
%%
%Addition of Noise
Receiver
% Fadded Data Received With Awgn Noise
Removing Cyclic Prefix
rx13 = rx12(:,[(4:(n + 3))]);
rx14 = rx13';
%%
Taking FFT
FFT_Data_Received = fft(rx14);
%%
Extract Pilots
Pilot_Received = FFT_Data_Received(:,Ip);
FFT_Data_Received(:,Ip) = [];
%%
BER of User1
RecData12 = real(RecData11)>0;
errors_User1(K) = size(find(Data_User1 - RecData12),2)
SBer1 = (errors_User1).^2 / N;
end
%%
Displaying Result
semilogy(snr,SBer1,'r','LineWidth',2);
hold on;
axis([0 20 10^-5 10^0]);
grid on
legend('Pilot-Based DFT method N=4','GA(Roulette Wheel) N=4');
clc;