⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mccdmaorgwalshlast.m

📁 单用户MC-CDMA系统仿真程序及结果
💻 M
字号:
clear all;
format long;
%c为扩频序列
d_num=10000;
d=rand(1,d_num);
d(find(d<0.5))=-1;
d(find(d>0.5))=1;
c=[1; 1 ;1 ;1; 1 ;j; -1; -j ;1 ;-1; 1; -1; 1; j ;-1; -j];

N=16;
a=[];
d1=[];
d2=[];
Plot_Pe = [];

 plot_EbNo = -20:2:10;
for EbNo = -20:2:10,
    %convert back from dB
Eb_No = EbNo; %dB
Eb_No = 10.^(Eb_No/10);
%assume No = 2;
No = 2;
Eb = No * Eb_No;
%calculate power p
Tc = 1;
Ts = N * Tc;
p = Eb / Ts;
i=1;
%N =16,产生随机的原始数据d,
%d=bingen(d_num);
%d=rand(1,d_num);
%d(find(d<0.5))=-1;
%d(find(d>0.5))=1;
for k=0:1:d_num/2-1;
    d1=d(2*k+1);
    d2=d(2*k+2);
    x1=d1*c;
    x2=d2*c;
    x=[x1';x2'];
mod=ifft(x);
y=reshape(mod,1,32);
%scale by appropriate power factor
y = sqrt(p)*y;
%add AWGN to signal
y = awgn(y,1);
y1=reshape(y,2,16);
demod=fft(y1);
demod1=demod(1,:);
demod2=demod(2,:);
dec1=demod1*c;
dec2=demod2*c;
    dec1(find(dec1<0.5))=-1;
    dec1(find(dec1>=0.5))=1;
    dec2(find(dec2<0.5))=-1;
    dec2(find(dec2>=0.5))=1;
    recover=[dec1 dec2];
    
    a(i:i+1)=[recover];
    i=i+2;
end
a
Pe = length(find(d - a))/d_num;

Plot_Pe = [Plot_Pe Pe];
end %end for EbNo
%display the calculated Pd and Pfa
Plot_Pe

%plot Pe versus Eb/No
semilogy(plot_EbNo,Plot_Pe,'m*:')

xlabel('Eb/No (dB)')
ylabel('BER')
s=sprintf('BER versus Eb/No in the AWGN channel');
title(s);
grid on
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%d_num=10;
%d=rand(1,d_num);
%d(find(d<0.5))=-1;
%d(find(d>0.5))=1;
c1=[1; 1 ;1 ;1; 1 ;1; 1; 1 ;1 ;1; 1; 1; 1; 1 ;1; 1];

N=16;
a=[];
d1=[];
d2=[];
Plot_Pe = [];

 plot_EbNo = -20:2:10;
for EbNo = -20:2:10,
    %convert back from dB
Eb_No = EbNo; %dB
Eb_No = 10.^(Eb_No/10);
%assume No = 2;
No = 2;
Eb = No * Eb_No;
%calculate power p
Tc = 1;
Ts = N * Tc;
p = Eb / Ts;
i=1;
%N =16,产生随机的原始数据d,
%d=bingen(d_num);
%d=rand(1,d_num);
%d(find(d<0.5))=-1;
%d(find(d>0.5))=1;
for k=0:1:d_num/2-1;
    d1=d(2*k+1);
    d2=d(2*k+2);
    x1=d1*c1;
    x2=d2*c1;
    x=[x1';x2'];
mod=ifft(x);
y=reshape(mod,1,32);
%scale by appropriate power factor
y = sqrt(p)*y;
%add AWGN to signal
y = awgn(y,1);
y1=reshape(y,2,16);
demod=fft(y1);
demod1=demod(1,:);
demod2=demod(2,:);
dec1=demod1*c1;
dec2=demod2*c1;
    dec1(find(dec1<0.5))=-1;
    dec1(find(dec1>=0.5))=1;
    dec2(find(dec2<0.5))=-1;
    dec2(find(dec2>=0.5))=1;
    recover=[dec1 dec2];
    
    a(i:i+1)=[recover];
    i=i+2;
end
a
Pe = length(find(d - a))/d_num;

Plot_Pe = [Plot_Pe Pe];
end %end for EbNo
%display the calculated Pd and Pfa
Plot_Pe

%plot Pe versus Eb/No
semilogy(plot_EbNo,Plot_Pe,'bo:')
legend('\it*-正交序列,o-WALSH序列')
xlabel('Eb/No (dB)')
ylabel('BER')
s=sprintf('BER versus Eb/No in the AWGN channel');
title(s);
grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -