* DS-CDMA simulation using Matlab
@ 2008-03-29 3:24 BULDO
0 siblings, 0 replies; only message in thread
From: BULDO @ 2008-03-29 3:24 UTC (permalink / raw)
Hi all
When i ran ds-cdma code below on matlab, i received this message:???
Undefined function or method 'hrollfcoef' for input arguments of type
'double'.
Error in ==> dscdmareal at 20
[xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1); %
T FILTER FUNCTION
%%%%%% DS-CDMA
clear all
close all
%**************************** Preparation part
*****************************
sr = 256000.0; %
symbol rate
ml = 2; %
number of modulation levels
br = sr * ml; %
bit rate
nd = 100; %
number of symbol
ebn0 = 3; %
Eb/No
%************************** Filter initialization
**************************
irfn = 21; %
number of filter taps
IPOINT = 8; %
number of oversample
alfs = 0.5; %
roll off factor
[xh] = hrollfcoef(irfn,IPOINT,sr,alfs,1); %
T FILTER FUNCTION
[xh2] = hrollfcoef(irfn,IPOINT,sr,alfs,0); %
R FILTER FUNCTION
%********************** Spreading code initialization
**********************
user = 1; %
number of users
seq = 1; %
1:M-sequence 2:Gold 3:Orthogonal Gold
stage = 3; %
number of stages
ptap1 = [1 3]; %
position of taps for 1st
ptap2 = [2 3]; %
position of taps for 2nd
regi1 = [1 1 1]; %
initial value of register for 1st
regi2 = [1 1 1]; %
initial value of register for 2nd
%******************** Generation of the spreading code
*********************
switch seq
case 1 %
M-sequence
code = mseq(stage,ptap1,regi1,user);
case 2 %
Gold sequence
m1 = mseq(stage,ptap1,regi1);
m2 = mseq(stage,ptap2,regi2);
code = goldseq(m1,m2,user);
case 3 %
Orthogonal Gold sequence
m1 = mseq(stage,ptap1,regi1);
m2 = mseq(stage,ptap2,regi2);
code = [goldseq(m1,m2,user),zeros(user,1)];
end
code = code * 2 - 1;
clen = length(code);
%************************** Fading initialization
**************************
rfade = 0; %
Rayleigh fading 0:nothing 1:consider
itau = [0,8]; %
delay time
dlvl1 = [0.0,40.0]; %
attenuation level
n0 = [6,7]; %
number of waves to generate fading
th1 = [0.0,0.0]; %
initial Phase of delayed wave
itnd1 = [3001,4004]; %
set fading counter
now1 = 2; %
number of directwave + delayed wave
tstp = 1 / sr / IPOINT / clen; %
time resolution
fd = 160; %
doppler frequency [Hz]
flat = 1; %
flat Rayleigh environment
itndel = nd * IPOINT * clen * 30; %
number of fading counter to skip
%**************************** START CALCULATION
****************************
nloop = 10; %
simulation number of times
for no=1:10,
ebn0=no;
noe = 0;
nod = 0;
for ii=1:nloop
%****************************** Transmitter
********************************
data = rand(user,nd*ml) > 0.5;
[ich, qch] = qpskmod(data,user,nd,ml); %
QPSK modulation
[ich1,qch1] = spread(ich,qch,code); %
spreading
[ich2,qch2] = compoversamp2(ich1,qch1,IPOINT); %
over sampling
[ich3,qch3] = compconv2(ich2,qch2,xh); %
filter
if user == 1 %
transmission
ich4 = ich3;
qch4 = qch3;
else
ich4 = sum(ich3);
qch4 = sum(qch3);
end
%***************************** Fading channel
******************************
if rfade == 0
ich5 = ich4;
qch5 = qch4;
else
[ich5,qch5] = sefade(ich4,qch4,itau,dlvl1,th1,n0,itnd1, ... %
fading channel
now1,length(ich4),tstp,fd,flat);
itnd1 = itnd1 + itndel;
end
%******************************** Receiver
*********************************
spow = sum(rot90(ich3.^2 + qch3.^2)) / nd; %
attenuation Calculation
attn = sqrt(0.5 * spow * sr / br * 10^(-ebn0/10));
[ich6,qch6] = comb2(ich5,qch5,attn); %
Add White Gaussian Noise (AWGN)
[ich7,qch7] = compconv2(ich6,qch6,xh2); %
filter
sampl = irfn * IPOINT + 1;
ich8 = ich7(:,sampl:IPOINT:IPOINT*nd*clen+sampl-1);
qch8 = qch7(:,sampl:IPOINT:IPOINT*nd*clen+sampl-1);
[ich9 qch9] = despread(ich8,qch8,code); %
despreading
demodata = qpskdemod(ich9,qch9,user,nd,ml); %
QPSK demodulation
%************************** Bit Error Rate (BER)
***************************
noe2 = sum(sum(abs(data-demodata)));
nod2 = user * nd * ml;
noe = noe + noe2;
nod = nod + nod2;
fprintf('%d\t%e\n',ii,noe2/nod2);
end
%******************************** Data file
********************************
ber = noe / nod;
beri(no)=ber;
fprintf('%d\t%d\t%d\t%e\n',ebn0,noe,nod,noe/nod); %
fprintf: built in function
fid = fopen('BER.dat','a');
fprintf(fid,'%d\t%e\t%f\t%f\t\n',ebn0,noe/nod,noe,nod); %
fprintf: built in function
fclose(fid);
end
%******************************** end of file
********************************
%data
figure(1),plot(data);
xlabel('Time');ylabel('Amplitude');title('data');
%CDMA QPSK modulation ich
%figure(2),plot(ich),grid;
%xlabel('Time');ylabel('Amplitude');title('QPSK Ich');
%CDMA QPSK modulation qch
%figure(3),plot(qch),grid;
%xlabel('Time');ylabel('Amplitude');title('QPSK qch');
%spreading
%figure(4),plot(ich1),grid;
%xlabel('Time');ylabel('Amplitude');title('spreaded Ich');
%figure(5),plot(qch1),grid;
%xlabel('Time');ylabel('Amplitude');title('spreaded qch');
%oversampling
%figure(6),plot(ich2),grid;
%xlabel('Time');ylabel('Amplitude');title('oversampled Ich');
%figure(7),plot(qch2),grid;
%xlabel('Time');ylabel('Amplitude');title('oversampled qch');
%filter
%figure(8),plot(ich3),grid;
%xlabel('Time');ylabel('Amplitude');title('filtered Ich');
%figure(9),plot(qch3),grid;
%xlabel('Time');ylabel('Amplitude');title('filtered qch');
%transmission
figure(2),plot(ich4),grid;
xlabel('Time');ylabel('Amplitude');title('transmission Ich');
figure(3),plot(qch4),grid;
xlabel('Time');ylabel('Amplitude');title('transmission qch');
%received signal
figure(4),plot(ich7),grid;
xlabel('Time');ylabel('Amplitude');title('received Ich');
figure(5),plot(qch7),grid;
xlabel('Time');ylabel('Amplitude');title('received qch');
%despread
figure(6),plot(ich9),grid;
xlabel('Time');ylabel('Amplitude');title('despread Ich');
figure(7),plot(qch9),grid;
xlabel('Time');ylabel('Amplitude');title('despread qch');
figure(8),plot(demodata),grid;
xlabel('Time');ylabel('Amplitude');title('demodata');
figure(9);
semilogy(beri,'*');
hold on
for i=1:10,
tmp=10^(i/10);
tmp=sqrt(tmp);
ber(i)=0.5*erfc(tmp);
end
semilogy(ber),grid;
xlabel('Eb/No[dB]');ylabel('BER');title('Performance CDMA');
Can anyone tells how to solve the problem? Thanks,best regards.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2008-03-29 3:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-03-29 3:24 DS-CDMA simulation using Matlab BULDO
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox