📄 opdetection.m
字号:
clc
clear
fbconnection=[1 0 0 0 0 1]; % fbconnection为m序列的一个本原多项式序列
mseq=m_sequence(fbconnection); % 产生m序列
fbconnection1=[1 0 0 0 0 1];
fbconnection2=[1 1 0 0 1 1]; % fbconnection1,fbconnenction2为m序列的一对优先对
goldseq=gold_seq(fbconnection1,fbconnection2); % 产生gold序列
N=2^length(fbconnection)-1; % N为gold序列长度,即为扩频倍数(扩频增益)
ind1=find(mseq==0);
mseq(ind1)=-1; % 极性变换
ind2=find(goldseq==0);
goldseq(ind2)=-1;% 极性变换
bit_number=800; % bit_number为用户数据长度
% K=12; % K为DS-CDMA信号中用户个数
% n=400;
l=1;
snr=-2;
K=10;
% K1=2:2:16;
% n1=length(K1);
% Ber=zeros(1,n1);
% for l=1:n;
% a=K1(1);
% b=K1(n1);
% for K=a:2:b
t=0;
data=zeros(K,bit_number);
for i=1:K
data(i,:)=randsrc(1,bit_number);
end % 产生K*bit_number的用户混合矩阵
% power1=10;% 假设第一个用户为期望用户,发射功率为0dB,其他用户为干扰用户,干扰功率为InterpowerdB
% Interpower=[10 10 10 10 10 10 10,10,10];
% Power=[power1,Interpower];
% % j=1;
r=zeros(N,bit_number);
for k=1:K
r1=zeros(N,bit_number);
r1=goldseq(k,:)'*data(k,:);
r1=awgn(r1,snr);
r=r+r1;
end
B=goldseq(1:K,:)';
R=B'*B;
y=B'*r;
for s=1:bit_number
b=zeros(1,K);
for m=1:2^K-1 %%2^N
base2=dec2base(m,2);%10 to 2
temp=zeros(1,length(base2));
for j=1:length(base2)
temp(j)=base2(j)-48;
end
b(1,K-length(base2)+1:end)=temp;
ind3=find(b==0);
b(ind3)=-1;
f(m)=2*b*y(:,s)-b*R*b';
if m>1&&f(m)>f(1);
f(1)=f(m);
ind=m;
ind4=b;
end
end
% data1=data';
for k=1:K
if ind4(1,k)~=data(k,s);
t=t+1;
end;
end
end
Ber(l)=t/(K*bit_number)
l=l+1;
% [number,ber1]=symerr(ind1,data1(1,:));
% Ber(1,snr+3)=Ber(1,snr+3)+number;
% Ber1(1,snr+3)=Ber1(1,snr+3)+ber1;
% end
% semilogy(SNR,Ber,'*')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -