?? mud_plot.m
字號:
%在DS-spread spectrum系統中,噪聲為加性高斯白噪聲,傳統單用戶檢測,線性解相關多用戶檢測和最小均方誤差多用戶檢測的性能比較clear allclose allclc;%prompt={'Enter the numbers of user:','Enter the length of user code:','Enter the power of the user code','Enter the power of Noise'};%name=['CDMA MUD TEST'];%line=1;%defaultanswer={'10','5000','1 2 3 4 5 6 7 8 9 10', '10'};%glabel=inputdlg(prompt,name,line,defaultanswer);%num1=str2num(char(glabel(1,1)));%num2=str2num(char(glabel(2,1)));%num3=str2num(char(glabel(3,1)));%num4=str2num(char(glabel(4,1)));UserNumber=10;%用戶數inflength=5000;%用戶信息序列長度a=[1 1 1 1 1 1 1 1 1 1]; %用戶信息功率Pn=30; %噪聲功率sigma=1;%噪聲標準差N=31;R=(ones(UserNumber)+(N-1)*eye(UserNumber))/N; %相關系數矩陣b=2*randint(UserNumber,inflength)-1; %用戶信息矩陣(隨機+1,-1矩陣)%******Generate M sequence******************coefficients=[1 0 1 0 0]; %5級左移m序列碼發生器的反饋系數mseq=mseries(coefficients); %生成31×31的m序列碼矩陣mseq=mseq(1:UserNumber,1:N);%*******************************************%**********Generate noise*******************n1=Pn*normrnd(0,1,1,inflength*N);n=zeros(UserNumber,inflength);for j=1:inflength ntemp=n1(1,((j-1)*N+1):j*N); n(:,j)=(mseq*ntemp')/N;end%*******************************************for k=1:1000 a1=a+a*0.1*k; A=diag(a1); y=R*A*b+n; %傳統單用戶檢測 ydec=inv(R)*y; %線性解相關多用戶檢測 ymmse=inv(R+sigma^2*inv(A))*y; %最小均方誤差多用戶檢測 ylen=length(find(sign(real(y(1,:)))-b(1,:))); ydeclen=length(find(sign(real(ydec(1,:)))-b(1,:))); ymmselen=length(find(sign(real(ymmse(1,:)))-b(1,:))); BER_y(1,k)=ylen/inflength; BER_ydec(1,k)=ydeclen/inflength; BER_ymmse(1,k)=ymmselen/inflength; snr(1,k)=20*log10(a1(1)/Pn); disp('誤碼個數為'); disp(ylen); disp(ydeclen); disp(ymmselen); disp('誤碼率為'); disp( BER_y(1,k)); disp(BER_ydec(1,k)); disp(BER_ymmse(1,k)); end%***畫出兩種檢測方法的BER-SNR對比圖********plot(snr,BER_y,'r-',snr,BER_ydec,'g:',snr,BER_ymmse,'y-.');legend('\it匹配濾波器','\it解相關檢測','\it最小均方誤差檢測');xlabel('信噪比(dB)'),ylabel('誤碼率');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -