Code
Code
% Description
% Parameter
% K : No of Users
% X=mccdma(code,K,M,Sub,SNR,iteration) returns a
vector which is [Bit error rate, Symbol error rate].
% sequence.
G_set=[];
switch code
case {1}
case {2}
case {3}
case {4}
p = [1 0 0 1 0 1 0 1 1]; %(1)
G_one = m_seq_gen(g,1);
for I=1:255
G_set_temp(I,:) = circshift(G_one,[0,I-1]);
end
end
switch Sub
case {8}
p2 = [1 1 0 1];
otherwise
p2 = [1 1 0 0 1];
Sub = 16;
end
g2 = m_seq_gen(p2,1);
for I=1:K
U_temp(I,:) = circshift(g2,[0,I-1]);
end
%U = sign(rand(K,Sub)-.5);
U_t=[];
for i=1:K
U_t=cat(1,U_t,repmat(U(i,:),N,1));
end
E_stot = zeros(1,K);
E_btot = 0;
N = 256;
Z = zeros(K,N*Sub);
symbol_T = N*Sub;
E_btot = 0;
No_bit=log2(M);
EbNo_temp = SNR/10.;
sigma = sqrt(N_temp/2);
symbol_temp = zeros(No_bit,K);
symbol_temp(:,:) = symbol(1,:,:);
symbol_index = bi2de(sign(symbol_temp+1)')+1;
% G(user,time)
G = G_set(symbol_index,:);
% Transmitter
% Spread in Frequency domain, X:Spreaded Signal in Freq
domain,
X = repmat(reshape(G',prod(size(G)),1),1,Sub).*U_t;
S = sqrt(Sub).*ifft(X,Sub,2);
S_t = reshape(S',symbol_T,K)';
SF_SUM = sum(S_t,1);
% AWGN, R(1,N*Sub)
R = reshape(R_t',Sub,N)';
R_fft = 1/sqrt(Sub)*fft(R,Sub,2);
for i=1:K
R_desp_temp(i,:) = (R_fft*U(i,:)'/Sub)';
end
R_desp = real(R_desp_temp);
% matched value
out_mat = R_desp*G_set(1:M,:)';
[maximum,Decode] = max(out_mat');
%Decoded_bits = G_set(Decode,:);
E_symbol = sign(abs(result));
E_bit_temp = sign(de2bi(Decode_t,No_bit)-0.5) -
symbol_temp';
E_bit = sign(abs(E_bit_temp));
E_avg = sum(E_stot,2);
SER = E_avg/K/iteration;
BER = E_btot/K/iteration/No_bit;
F = [BER, SER];