?? untitled.m
字號:
clc
clear
k=4; %用戶
numbits=1000; %比特序列數
exno=8:2:22; %Eb/N0
BER=zeros(k,length(exno)); %PIC k個用戶的誤碼率
Ber=zeros(k,length(exno));
ber=zeros(k,length(exno)); %NOPIC k個用戶的誤碼率
BER1=zeros(1,length(exno)); %PIC的誤碼率
BER2=zeros(1,length(exno)); %NOPIC的誤碼率
bits_add=bitgene(k); %產生擴頻碼
S=zeros(1,numbits*31/2); %經過QPSK調制的信號
SS=zeros(k,numbits*31/2); %QPSK調制與擴頻后的信號
S_out=zeros(k,numbits);
bits=zeros(k,numbits); %產生的隨機信號
bits_double=zeros(k,numbits); %對產生的隨機信號double
%%%%%%%%%%%%%%%%%%%%%%%%%%%%產生信號%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:k
bits(i,:)=Sbits(numbits);
bits_double(i,:)=double(bits(i,:));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK調制&&擴頻%%%%%%%%%%%%%%%%%%%%%%%%%%%
for x=1:k
S_qpsk(x,:)=QPSK_mod(bits_double(x,:));
SS(x,:)=cdma(S_qpsk(x,:),bits_add(x,:));
S(1,:)=SS(x,:)+S(1,:);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%加入噪聲%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SNR=exno-10*log10(31/2);
output=Gnoise(S(1,:),SNR);
%%%%%%%%%%%%%%%%%%%%%%%%%%%PICMUD與解擴%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for y=1:length(exno)
[bits_out2,bits_out,S_out,r]=picmud2(output(y,:),bits_add,k); %bis_ou2為二級PICMUD的信號,bis_out為一級PICMUD的信號 S_out為無PICMUD的信號,均為k行信號
for z=1:k
bits_qpskout2(z,:)=DEQPSK(bits_out2(z,:));
bits_qpskout(z,:)=DEQPSK(bits_out(z,:));
S_qpskout(z,:)=DEQPSK(S_out(z,:));
BER(z,y)=Error(bits_qpskout2(z,:),bits_double(z,:));
Ber(z,y)=Error(bits_qpskout(z,:),bits_double(z,:));
ber(z,y)=Error(S_qpskout(z,:),bits_double(z,:));
end
end
semilogy(exno,BER(1,:),'^k-'); %%%%%%%%%%%%PIC2
hold on
semilogy(exno,Ber(1,:),'*r-'); %%%%%%%%%%%%PIC
hold on
semilogy(exno,ber(1,:),'xb-'); %%%%%%%%%%%%%NOPIC
numbit=1000;
Ns=31;
k=4;
exno=0:2:12;
BER=zeros(k,length(exno)); %PIC k個用戶的誤碼率
ber=zeros(k,length(exno)); %NOPIC k個用戶的誤碼率
BER1=zeros(1,length(exno)); %PIC的誤碼率
BER2=zeros(1,length(exno)); %NOPIC的誤碼率
bits_add=bitgene(k); %產生擴頻碼
Sqpsk=zeros(1,numbits*31/2); %經過QPSK調制的信號
SS=zeros(k,numbits*31/2); %QPSK調制與擴頻后的信號
S_out=zeros(k,numbits);
bits=zeros(k,numbits); %產生的隨機信號
bits_double=zeros(k,numbits); %對產生的隨機信號double
%%%%%%%%%%%%%%%%%%%%%%%%%%%%產生信號%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:k
bits(i,:)=Sbits(numbits);
bits_double(i,:)=double(bits(i,:));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%QPSK調制&&擴頻%%%%%%%%%%%%%%%%%%%%%%%%%%%
for x=1:k
S_qpsk(x,:)=QPSK_mod(bits_double(x,:));
SS(x,:)=cdma(S_qpsk(x,:),bits_add(x,:));
S(1,:)=SS(x,:)+S(1,:);
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%加入噪聲%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SNR=exno-10*log10(31/2);
output=Gnoise(S(1,:),SNR);
%%%%%%%%%%%%%%%%%%%%%%%%%%%PICMUD與解擴%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for y=1:length(exno)
[bits_out,S_out,r]=picmud(output(y,:),bits_add,k); %bis_out為PIC的信號 S_out為NOPIC的信號,均為k行信號
for z=1:k
bits_qpskout(z,:)=DEQPSK(bits_out(z,:));
S_qpskout(z,:)=DEQPSK(S_out(z,:));
BER(z,y)=Error(bits_qpskout(z,:),bits_double(z,:));
ber(z,y)=Error(S_qpskout(z,:),bits_double(z,:));
end
end
semilogy(exno,BER(1,:),'^k-');
hold on
semilogy(exno,ber(1,:),'*r-');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -