xischaune
Joined: 08 Mar 2006 Posts: 122 Helped: 11
|
17 Aug 2006 20:00 Please can any one send me the Matlab code for simulate the |
|
|
|
|
Chk this out ...maybe this helps...
%------MATLAB code for simulating the spreading using Walsh Codes----------
clear all;
close all;
no_of_users=64;
data_length=50;
user_data=randsrc(no_of_users,data_length,[-1 1]);
user=(1/64)*user_data;
%----------Generating the codes and its timing sequence--------------------
N=64;
H=hadamard(N);
c_1=H(1, ; c_2=H(2, ; c_3=H(3, ; c_4=H(4, ; c_5=H(5, ; c_6=H(6, ; c_7=H(7, ; c_8=H(8, ; c_9=H(9, ; c_10=H(10, ;
c_11=H(11, ;c_12=H(12, ;c_13=H(13, ;c_14=H(14, ;c_15=H(15, ;c_16=H(16, ;c_17=H(17, ;c_18=H(18, ;c_19=H(19, ;c_20=H(20, ;
c_21=H(21, ;c_22=H(22, ;c_23=H(23, ;c_24=H(24, ;c_25=H(25, ;c_26=H(26, ;c_27=H(27, ;c_28=H(28, ;c_29=H(29, ;c_30=H(30, ;
c_31=H(31, ;c_32=H(32, ;c_33=H(33, ;c_34=H(34, ;c_35=H(35, ;c_36=H(36, ;c_37=H(37, ;c_38=H(38, ;c_39=H(39, ;c_40=H(40, ;
c_41=H(41, ;c_42=H(42, ;c_43=H(43, ;c_44=H(44, ;c_45=H(45, ;c_46=H(46, ;c_47=H(47, ;c_48=H(48, ;c_49=H(49, ;c_50=H(50, ;
c_51=H(51, ;c_52=H(52, ;c_53=H(53, ;c_54=H(54, ;c_55=H(55, ;c_56=H(56, ;c_57=H(57, ;c_58=H(58, ;c_59=H(59, ;c_60=H(60, ;
c_61=H(61, ;c_62=H(62, ;c_63=H(63, ;c_64=H(64, ;
%-----------------Number of samples per chip-------------------------------
chips=4;
Tc_samp=ones(1,chips); %user codes
code_1=[]; code_2=[]; code_3=[]; code_4=[]; code_5=[]; code_6=[]; code_7=[]; code_8=[]; code_9=[]; code_10=[];
code_11=[];code_12=[];code_13=[];code_14=[];code_15=[];code_16=[];code_17=[];code_18=[];code_19=[];code_20=[];
code_21=[];code_22=[];code_23=[];code_24=[];code_25=[];code_26=[];code_27=[];code_28=[];code_29=[];code_30=[];
code_31=[];code_32=[];code_33=[];code_34=[];code_35=[];code_36=[];code_37=[];code_38=[];code_39=[];code_40=[];
code_41=[];code_42=[];code_43=[];code_44=[];code_45=[];code_46=[];code_47=[];code_48=[];code_49=[];code_50=[];
code_51=[];code_52=[];code_53=[];code_54=[];code_55=[];code_56=[];code_57=[];code_58=[];code_59=[];code_60=[];
code_61=[];code_62=[];code_63=[];code_64=[];
%------------------Spreading Walsh code by chips---------------------------
for k=1:length(H)
code_1=[code_1 c_1(k)*Tc_samp]; code_2=[code_2 c_2(k)*Tc_samp]; code_3=[code_3 c_3(k)*Tc_samp]; code_4=[code_4 c_4(k)*Tc_samp];
code_5=[code_5 c_5(k)*Tc_samp]; code_6=[code_6 c_6(k)*Tc_samp]; code_7=[code_7 c_7(k)*Tc_samp]; code_8=[code_8 c_8(k)*Tc_samp];
code_9=[code_9 c_9(k)*Tc_samp]; code_10=[code_10 c_10(k)*Tc_samp];code_11=[code_11 c_11(k)*Tc_samp];code_12=[code_12 c_12(k)*Tc_samp];
code_13=[code_13 c_13(k)*Tc_samp];code_14=[code_14 c_14(k)*Tc_samp];code_15=[code_15 c_15(k)*Tc_samp];code_16=[code_16 c_16(k)*Tc_samp];
code_17=[code_17 c_17(k)*Tc_samp];code_18=[code_18 c_18(k)*Tc_samp];code_19=[code_19 c_19(k)*Tc_samp];code_20=[code_20 c_20(k)*Tc_samp];
code_21=[code_21 c_21(k)*Tc_samp];code_22=[code_22 c_22(k)*Tc_samp];code_23=[code_23 c_23(k)*Tc_samp];code_24=[code_24 c_24(k)*Tc_samp];
code_25=[code_25 c_25(k)*Tc_samp];code_26=[code_26 c_26(k)*Tc_samp];code_27=[code_27 c_27(k)*Tc_samp];code_28=[code_28 c_28(k)*Tc_samp];
code_29=[code_29 c_29(k)*Tc_samp];code_30=[code_30 c_30(k)*Tc_samp];code_31=[code_31 c_31(k)*Tc_samp];code_32=[code_32 c_32(k)*Tc_samp];
code_33=[code_33 c_33(k)*Tc_samp];code_34=[code_34 c_34(k)*Tc_samp];code_35=[code_35 c_35(k)*Tc_samp];code_36=[code_36 c_36(k)*Tc_samp];
code_37=[code_37 c_37(k)*Tc_samp];code_38=[code_38 c_38(k)*Tc_samp];code_39=[code_39 c_39(k)*Tc_samp];code_40=[code_40 c_40(k)*Tc_samp];
code_41=[code_41 c_41(k)*Tc_samp];code_42=[code_42 c_42(k)*Tc_samp];code_43=[code_43 c_43(k)*Tc_samp];code_44=[code_44 c_44(k)*Tc_samp];
code_45=[code_45 c_45(k)*Tc_samp];code_46=[code_46 c_46(k)*Tc_samp];code_47=[code_47 c_47(k)*Tc_samp];code_48=[code_48 c_48(k)*Tc_samp];
code_49=[code_49 c_49(k)*Tc_samp];code_50=[code_50 c_50(k)*Tc_samp];code_51=[code_51 c_51(k)*Tc_samp];code_52=[code_52 c_52(k)*Tc_samp];
code_53=[code_53 c_53(k)*Tc_samp];code_54=[code_54 c_54(k)*Tc_samp];code_55=[code_55 c_55(k)*Tc_samp];code_56=[code_56 c_56(k)*Tc_samp];
code_57=[code_57 c_57(k)*Tc_samp];code_58=[code_58 c_58(k)*Tc_samp];code_59=[code_59 c_59(k)*Tc_samp];code_60=[code_60 c_60(k)*Tc_samp];
code_61=[code_61 c_61(k)*Tc_samp];code_62=[code_62 c_62(k)*Tc_samp];code_63=[code_63 c_63(k)*Tc_samp];code_64=[code_64 c_64(k)*Tc_samp];
end
%---------------------Generation of Tx Data--------------------------------
Tx_data=[];
for k=1:data_length %Multiplying user data with code and summing
u_1=user(1,k)*code_1; u_2=user(2,k)*code_2; u_3=user(3,k)*code_3; u_4=user(4,k)*code_4; u_5=user(5,k)*code_5; u_6=user(6,k)*code_6;
u_7=user(7,k)*code_7; u_8=user(8,k)*code_8; u_9=user(9,k)*code_9; u_10=user(10,k)*code_10;u_11=user(11,k)*code_11;u_12=user(12,k)*code_12;
u_13=user(13,k)*code_13;u_14=user(14,k)*code_14;u_15=user(15,k)*code_15;u_16=user(16,k)*code_16;u_17=user(17,k)*code_17;u_18=user(18,k)*code_18;
u_19=user(19,k)*code_19;u_20=user(20,k)*code_20;u_21=user(21,k)*code_21;u_22=user(22,k)*code_22;u_23=user(23,k)*code_23;u_24=user(24,k)*code_24;
u_25=user(25,k)*code_25;u_26=user(26,k)*code_26;u_27=user(27,k)*code_27;u_28=user(28,k)*code_28;u_29=user(29,k)*code_29;u_30=user(30,k)*code_30;
u_31=user(31,k)*code_31;u_32=user(32,k)*code_32;u_33=user(33,k)*code_33;u_34=user(34,k)*code_34;u_35=user(35,k)*code_35;u_36=user(36,k)*code_36;
u_37=user(37,k)*code_37;u_38=user(38,k)*code_38;u_39=user(39,k)*code_39;u_40=user(40,k)*code_40;u_41=user(41,k)*code_41;u_42=user(42,k)*code_42;
u_43=user(43,k)*code_43;u_44=user(44,k)*code_44;u_45=user(45,k)*code_45;u_46=user(46,k)*code_46;u_47=user(47,k)*code_47;u_48=user(48,k)*code_48;
u_49=user(49,k)*code_49;u_50=user(50,k)*code_50;u_51=user(51,k)*code_51;u_52=user(52,k)*code_52;u_53=user(53,k)*code_53;u_54=user(54,k)*code_54;
u_55=user(55,k)*code_55;u_56=user(56,k)*code_56;u_57=user(57,k)*code_57;u_58=user(58,k)*code_58;u_59=user(59,k)*code_59;u_60=user(60,k)*code_60;
u_61=user(61,k)*code_61;u_62=user(62,k)*code_62;u_63=user(63,k)*code_63;u_64=user(64,k)*code_64;
Tx_data=[Tx_data u_1+u_2+u_3+u_4+u_5+u_6+u_7+u_8+u_9+u_10+u_11+u_12+u_13+u_14+u_15+u_16+u_17+u_18+u_19+u_20+u_21+u_22+u_23+u_24+u_25+u_26+u_27+u_28+u_29+u_30+u_31+u_32+u_33+u_34+u_35+u_36+u_37+u_38+u_39+u_40+u_41+u_42+u_43+u_44+u_45+u_46+u_47+u_48+u_49+u_40+u_51+u_52+u_53+u_54+u_55+u_56+u_57+u_58+u_59+u_60+u_61+u_62+u_63+u_64];
end
%-------------------------Generating PN Code-------------------------------
m=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1];
PN=[];
for k=1:32767
PN=[PN m(15)];
temp1=m(1);temp2=m(2);temp3=m(3);temp4=m(4);temp5=m(5);temp6=m(6);temp7=m(7);temp8=m( ;
temp9=m(9);temp10=m(10);temp11=m(11);temp12=m(12);temp13=m(13);temp14=m(14);temp15=m(15);
m(1)=temp15;
m(2)=temp1;
m(3)=temp2;
m(4)=temp3;
m(5)=temp4;
m(6)=m(5)*m(15);
m(7)=temp6;
m( =m(7)*m(15);
m(9)=m( *m(15);
m(10)=m(9)*m(15);
m(11)=temp10;
m(12)=temp11;
m(13)=temp12;
m(14)=m(13)*m(15);
m(15)=temp14;
end
%--------------------Multiplying data with PN code-------------------------
for i=1:length(Tx_data)
Tx_data(i)=Tx_data(i)*PN(i);
end
Rx_data=Tx_data; %Simulating transmission
%------------------Multiplying received data with PN code------------------
for i=1:length(Rx_data)
Rx_data(i)=Rx_data(i)*PN(i);
end
Rx_data=64*Rx_data;
%-----------------------De-Spreading user data with Walsh code-------------
NN=length(Rx_data); %Received user data
user_1=[]; user_2=[]; user_3=[]; user_4=[]; user_5=[]; user_6=[]; user_7=[]; user_8=[]; user_9=[]; user_10=[];
user_11=[];user_12=[];user_13=[];user_14=[];user_15=[];user_16=[];user_17=[];user_18=[];user_19=[];user_20=[];
user_21=[];user_22=[];user_23=[];user_24=[];user_25=[];user_26=[];user_27=[];user_28=[];user_29=[];user_30=[];
user_31=[];user_32=[];user_33=[];user_34=[];user_35=[];user_36=[];user_37=[];user_38=[];user_39=[];user_40=[];
user_41=[];user_42=[];user_43=[];user_44=[];user_45=[];user_46=[];user_47=[];user_48=[];user_49=[];user_50=[];
user_51=[];user_52=[];user_53=[];user_54=[];user_55=[];user_56=[];user_57=[];user_58=[];user_59=[];user_60=[];
user_61=[];user_62=[];user_63=[];user_64=[];
code_chips=length(H)*length(Tc_samp);
for k=1:NN/code_chips %Multiply and sum for bit period
index=(k-1)*NN/data_length+1:k*NN/data_length;
user_1=[user_1 sum(Rx_data(index).*code_1)];user_2=[user_2 sum(Rx_data(index).*code_2)];user_3=[user_3 sum(Rx_data(index).*code_3)];user_4=[user_4 sum(Rx_data(index).*code_4)];
user_5=[user_5 sum(Rx_data(index).*code_5)];user_6=[user_6 sum(Rx_data(index).*code_6)];user_7=[user_7 sum(Rx_data(index).*code_7)];user_8=[user_8 sum(Rx_data(index).*code_8)];
user_9=[user_9 sum(Rx_data(index).*code_9)];user_10=[user_10 sum(Rx_data(index).*code_10)];user_11=[user_11 sum(Rx_data(index).*code_11)];user_12=[user_12 sum(Rx_data(index).*code_12)];
user_13=[user_13 sum(Rx_data(index).*code_13)];user_14=[user_14 sum(Rx_data(index).*code_14)];user_15=[user_15 sum(Rx_data(index).*code_15)];user_16=[user_16 sum(Rx_data(index).*code_16)];
user_17=[user_17 sum(Rx_data(index).*code_17)];user_18=[user_18 sum(Rx_data(index).*code_18)];user_19=[user_19 sum(Rx_data(index).*code_19)];user_20=[user_20 sum(Rx_data(index).*code_20)];
user_21=[user_21 sum(Rx_data(index).*code_21)];user_22=[user_22 sum(Rx_data(index).*code_22)];user_23=[user_23 sum(Rx_data(index).*code_23)];user_24=[user_24 sum(Rx_data(index).*code_24)];
user_25=[user_25 sum(Rx_data(index).*code_25)];user_26=[user_26 sum(Rx_data(index).*code_26)];user_27=[user_27 sum(Rx_data(index).*code_27)];user_28=[user_28 sum(Rx_data(index).*code_28)];
user_29=[user_29 sum(Rx_data(index).*code_29)];user_30=[user_30 sum(Rx_data(index).*code_30)];user_31=[user_31 sum(Rx_data(index).*code_31)];user_32=[user_32 sum(Rx_data(index).*code_32)];
user_33=[user_33 sum(Rx_data(index).*code_33)];user_34=[user_34 sum(Rx_data(index).*code_34)];user_35=[user_35 sum(Rx_data(index).*code_35)];user_36=[user_36 sum(Rx_data(index).*code_36)];
user_37=[user_37 sum(Rx_data(index).*code_37)];user_38=[user_38 sum(Rx_data(index).*code_38)];user_39=[user_39 sum(Rx_data(index).*code_39)];user_40=[user_40 sum(Rx_data(index).*code_40)];
user_41=[user_41 sum(Rx_data(index).*code_41)];user_42=[user_42 sum(Rx_data(index).*code_42)];user_43=[user_43 sum(Rx_data(index).*code_43)];user_44=[user_44 sum(Rx_data(index).*code_44)];
user_45=[user_45 sum(Rx_data(index).*code_45)];user_46=[user_46 sum(Rx_data(index).*code_46)];user_47=[user_47 sum(Rx_data(index).*code_47)];user_48=[user_48 sum(Rx_data(index).*code_48)];
user_49=[user_49 sum(Rx_data(index).*code_49)];user_50=[user_50 sum(Rx_data(index).*code_50)];user_51=[user_51 sum(Rx_data(index).*code_51)];user_52=[user_52 sum(Rx_data(index).*code_52)];
user_53=[user_53 sum(Rx_data(index).*code_53)];user_54=[user_54 sum(Rx_data(index).*code_54)];user_55=[user_55 sum(Rx_data(index).*code_55)];user_56=[user_56 sum(Rx_data(index).*code_56)];
user_57=[user_57 sum(Rx_data(index).*code_57)];user_58=[user_58 sum(Rx_data(index).*code_58)];user_59=[user_59 sum(Rx_data(index).*code_59)];user_60=[user_60 sum(Rx_data(index).*code_60)];
user_61=[user_61 sum(Rx_data(index).*code_61)];user_62=[user_62 sum(Rx_data(index).*code_62)];user_63=[user_63 sum(Rx_data(index).*code_63)];user_64=[user_64 sum(Rx_data(index).*code_64)];
end
%Error (Dividing decoded user data by cgip length to calculate sent data and error
%comparison)
i=10; %Checking error for ith user, change user_1 to user_ith user in next line
user_err=user_10/code_chips-user_data(i, ;
Added after 4 minutes:
sorry for the emoticons
|
|