»ùÓÚMATLABµÄBPSKµ÷ÖÆ·ÂÕæ¼°ÐÔÄÜ·ÖÎö ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/9/19 19:13:56ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

axis([0 N -2 2]);xlabel('¾­µÍͨÂ˲¨Æ÷ºóÐźŲ¨ÐÎ') %³éÑùÅоö

x=fun_panjue(x);%µ÷Óú¯Êý£¬½øÐгéÑùÅоö figure(4);subplot(2,1,1);plot(x);grid on; xlabel('¼ÓÔëºó½âµ÷ÐźÅx(t)'); axis([0 N -2 2]); %Ïû³ýÑÓ³Ù

x=fun_yanc(x); %µ÷Óú¯Êý£¬½øÐÐÏû³ýÑÓ³Ù figure(4);subplot(2,1,2);plot(x);grid on; xlabel('¼ÓÔëºóÈ¥µôÑӳٵĽâµ÷ÐźÅx(t)'); axis([0 N -2 2]); %ÎóÂëÂʼÆËã

Err1=length(find(x~=s)) %¼ÆËã½âµ÷ÐźÅÖдíÎóÂëÔª¸öÊý Pe_test1=Err1/N %¼ÆËãʵ¼ÊÎóÂëÂÊ

Pe1=(1/2)*erfc(sqrt(snr)) %¼ÆËãϵͳÀíÂÛÎóÂëÂÊ % ÀíÂÛÎóÂëÂÊÇúÏß Pe=[]; for SNR=1:10

am=0.7; %ÊäÈëÐźž­ÐŵÀºóÕñ·ùÓÉ1Ë¥¼õΪ0.7 E=am*am/2; snr=10^(SNR/10); N0=(am*am)/(2*snr);

no=N0/(2*200); %¼ÆËãÔëÉù¹¦ÂÊ

N0_db=10*log10(N0);%½«ÔëÉù¹¦ÂÊת»»ÎªdBW ni=wgn(1,N,N0_db);% ²úÉú1ÐÐNÁеĸß˹ÔëÉù

yi=e+ni; %BSKÒѵ÷ÐźÅÖмÓÈë°×ÔëÉù£¬ÊäÈëÐÅÔë±ÈΪSNR y=filter(b1,a1,yi);%¶Ôyi½øÐÐÂ˲¨(´øÍ¨Â˲¨Æ÷)£¬µÃµ½ÐźÅy x1=2*c.*y; %Óë»Ö¸´Ôز¨Ïà³Ë xx=filter(b2,a2,x1); %¾­µÍͨÂ˲¨Æ÷Â˲¨ xx=fun_panjue(xx);%³éÑùÅоö xx=fun_yanc(xx); %Ïû³ýÑÓ³Ù

20

snr=10^(SNR/10);

Pe=[Pe,(1/2)*erfc(sqrt(snr))]; %¼ÆËãÀíÂÛÎóÂëÂÊ end Pe; figure; SNR=1:10;

semilogy(SNR,Pe,'b--');hold on %ÒÔlog10(Pe)Ϊ×Ý×ø±ê»­Í¼ grid on

×Ó³ÌÐòÒ»£º³éÑùÅоö

£¨ÓÉÓÚ´æÔÚ¡°µ¹pi¡±ÏÖÏ󣬹ÊÒÔ0Ϊ»ù×¼½øÐÐÅоö£¬´óÓÚ0£¬ÅÐΪ0£»Ð¡ÓÚ0£¬ÅÐΪ1£© function w=fun_panjue(w) N=length(w); if w(100)>0

w(1:100)=0; else

w(1:100)=1; end

for i=101:N if w(i)>0; w(i)=0; else

w(i)=1; end end

×Óº¯Êý¶þ£ºÏû³ýÑÓ³Ù

£¨ÓÉÓÚ³éÑùÅоöºó»á²úÉúÑÓ³Ù£¬¹ÊÈÏΪ¶Ô½âµ÷ÐźŽøÐÐÊ±ÒÆ£¬ÒÔ¼õСÉõÖÁÏû³ýÑÓ³Ù£¬±ãÓÚÓë»ù´øÐźŽøÐбȽϣ¬¼ÆËãʵ¼ÊÎóÂëÂÊ£© function m=fun_yanc(m) N=length(m); leng=0; if m(1)==0 for i=1:N

if m(i)==1 leng=i; break; end end else

for i=1:N

if m(i)==0 leng=i;

21

break; end end end

leng1=leng-(floor(leng/200))*200; for i=1:(N-leng1)

m(i)=m(i+leng1); end

for i=(N-leng1):N

m(i)=m(N-200+10); end

22