📄 mccdmaorgwalshlast.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 + -