·¢²¼Ê±¼ä : ÐÇÆÚËÄ ÎÄÕ»ùÓÚMATLABµÄÊý×ÖƵ´øͨÐÅϵͳµÄ·ÂÕæ - ͼÎĸüÐÂÍê±Ï¿ªÊ¼ÔĶÁ
±±¾©Óʵç´óѧÊÀ¼ÍѧԺ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
²Î¿¼ÎÄÏ×
[1] ·®²ýÐÅ£¬Õ²µÀÓ¹£¬Ðì±þÏ飬Îâ³É¿Â£®Í¨ÐÅÔÀí[M]£®±±¾©£º¹ú·À¹¤Òµ³ö°æÉ磬
1980£º171~260£®
[2] ѦÅôå¹£®µç×ÓÓëͨÐŵç·¼ÆËã»ú·ÂÕæ[M]£®±±¾©£ºÃºÌ¿¹¤Òµ³ö°æÉ磬2003£º
113~144£®
[3] µË»ª£®MATLABͨÐÅ·ÂÕæ¼°Ó¦ÓÃʵÀýÏê½â[M]£®±±¾©£ºÈËÃñÓʵç³ö°æÉ磬2003£º
99~115£®
[4] ³Â»³è¡£®MATLAB¼°ÆäÔÚÀí¹¤¿Î³ÌÖеÄÓ¦ÓÃÖ¸ÄÏ[M]£®Î÷°²£ºÎ÷°²µç×ӿƼ¼´óѧ
³ö°æÉ磬2002£º146~180£®
[5] ÕÅÇ«£®Í¨ÐÅϵͳÖÐMATLAB»ù´¡Óë·ÂÕæÓ¦ÓÃ[M]£®Î÷°²£ºÎ÷°²µç×ӿƼ¼´óѧ³ö°æ
É磬2010£º85~109£®
[6] ËïÒÙ£®MATLABͨÐÅ·ÂÕ濪·¢ÊÖ²á[M]£®±±¾©£º¹ú·À¹¤Òµ³ö°æÉ磬2005£º138~168£® [7] ÍõÁ¢Äþ£¬ÀÖ¹âУ¬Õ²·Æ£®MATLABÓëͨÐÅ·ÂÕæ[M]£®±±¾©£ºÈËÃñÓʵç³ö°æÉ磬2000£º
74~86£®
[8] Ô¼º²¡¤G¡¤ÆÕÂÞ¿Ë˹£®ÏÖ´úͨÐÅϵͳµÄʹÓÃMATLAB[M]£®Î÷°²£ºÎ÷°²½»Í¨Ñ§³ö°æ
É磬2001£º95~121£®
[9] ³ÂƼ£®ÏÖ´úͨÐÅʵÑéϵͳµÄ¼ÆËã»ú·ÂÕæ[M]£®±±¾©£º¹ú·À¹¤Òµ³ö°æÉ磬2003£º
171~260£®
[10] ËïÁÁ£®MATLABÓïÑÔÓë¿ØÖÆϵͳ·ÂÕæ[M]£®±±¾©£º±±¾©¹¤Òµ´óѧ³ö°æÉ磬2001£º
64~83£®
[11] William A Shay£®Understanding Data Communications and Networks[M]£º
Wadsworth Publishing Company£¬1998£º162~164£®
[12] William Stallings£®Data and Computer Communications£¬Seventh Edition[M]:
Prentice Hall£¬2003£º201~207£®
30
±±¾©Óʵç´óѧÊÀ¼ÍѧԺ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
¸½Â¼
MATLAB·ÂÕæ³ÌÐò£º Ò»£®QPSK·ÂÕæ
clear;
T=1; fc=10/T; ml=2; nb=100;
delta_T=T/200; fs=1/delta_T; SNR=0;
t=0:delta_T:nb*T-delta_T; N=length(t);
data=randn(1,nb)>0.5; datanrz=data.*2-1;
data1=zeros(1,nb/delta_T); for q=1:nb
data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); end
% ½«»ù´øÐźű任³É¶ÔÓ¦²¨ÐÎÐźŠdata0=zeros(1,nb/delta_T); for q=1:nb
data0((q-1)/delta_T+1:q/delta_T)=data(q); % end
% ·¢ÉäµÄÐźÅ
data2=abs(fft(data1));
% ´®²¢×ª»»£¬½«ÆæżλÊý¾Ý·Ö¿ª idata=datanrz(1:ml:(nb-1)); qdata=datanrz(2:ml:nb); % QPSKÐźŵĵ÷ÖÆ
ich=zeros(1,nb/delta_T/2); for i=1:nb/2
ich((i-1)/delta_T+1:i/delta_T)=idata(i); end
for ii=1:N/2
a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end
31
±±¾©Óʵç´óѧÊÀ¼ÍѧԺ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
idata1=ich.*a; qch=zeros(1,nb/2/delta_T); for j1=1:nb/2
qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1); end
for jj=1:N/2
b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end
qdata1=qch.*b;
s=idata1+qdata1; ss=abs(fft(s));
% ÈðÀûË¥ÂäÐŵÀ
ray_ich=raylrnd(0.8,1,nb/2/delta_T); ray_qch=raylrnd(0.8,1,nb/2/delta_T); Ray_idata=idata1.*ray_ich; Ray_qdata=qdata1.*ray_qch; Ray_s=Ray_idata+Ray_qdata;
%%%%%%%%%%%%%%%%%%%%%%%%%% % ¸ß˹ÐŵÀ
s1=awgn(s,SNR); % ͨ¹ý¸ß˹ÐŵÀÖ®ºóµÄÐźÅ
s11=abs(fft(s1)); % ¿ìËÙ¸µÀïÒ¶±ä»»µÃµ½ÆµÆ× s111=s1-s; % ¸ß˹ÔëÉùÇúÏß %%%%%%%%%%%%%%%%%%%%%%%%%%
Awgn_s=awgn(Ray_s,SNR); % ͨ¹ý¸ß˹ÐŵÀÔÙͨ¹ýÈðÀûË¥ÂäÐŵÀ % QPSK ½âµ÷²¿·Ö
% ½âµ÷²¿·Ö£¨¸ß˹ÐŵÀ£©
idata2=s1.*a; % ÕâÀïÃæÆäʵÒþ²ØÁËÒ»¸ö´®²¢×ª»»µÄ¹ý³Ì qdata2=s1.*b; % ¶ÔÓ¦µÄÐźÅÓëÕýÓàÏÒÐźÅÏà³Ë
idata3=zeros(1,nb/2); % ½¨Á¢1*nbÊý×飬ÒÔ´æ·Å½âµ÷Ö®ºóµÄÐźŠqdata3=zeros(1,nb/2);
% ³éÑùÅоöµÄ¹ý³Ì£¬Óë0×÷±È½Ï£¬data>=0,ÔòÖÃ1£¬·ñÔòÖÃ0 for n=1:nb/2
% A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T)); if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1;
else idata3(n)=0; end
% A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T)); if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0
32
±±¾©Óʵç´óѧÊÀ¼ÍѧԺ±ÏÒµÉè¼Æ£¨ÂÛÎÄ£©
qdata3(n)=1; else qdata3(n)=0; end end
% ΪÁËÏÔʾÐÇ×ùͼ,½«ÐźŽøÐд¦Àí idata4=zeros(1,nb/2); qdata4=zeros(1,nb/2); for n=1:nb/2
Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_ichsum(n)>=0 idata4(n)=1; else idata4(n)=0; end
Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_qchsum(n)>=0 qdata4(n)=1; else qdata4(n)=0; end end
% ½«ÅоöÖ®ºóµÄÊý¾Ý´æ·Å½øÊý×é demodata=zeros(1,nb);
demodata(1:ml:(nb-1))=idata3; % ´æ·ÅÆæÊýλ demodata(2:ml:nb)=qdata3; % ´æ·ÅżÊýλ
%ΪÁËÏÔʾ£¬½«Ëü±ä³É²¨ÐÎÐźţ¨¼´´«ÊäÒ»¸ö1´ú±íµ¥Î»¿í¶ÈµÄ¸ßµçƽ£© demodata1=zeros(1,nb/delta_T); % ´´½¨Ò»¸ö1*nb/delta_TµÄÁã¾ØÕó for q=1:nb
demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % ½«¼«ÐÔÂë±ä³É¶ÔÓ¦µÄ²¨ÐÎÐźŠend
% ÀÛ¼ÆÎóÂëÊý
% abs(demodata-data)Çó½ÓÊն˺ͷ¢Éä¶Ë
% Êý¾Ý²îµÄ¾ø¶ÔÖµ£¬ÀÛ¼ÆÖ®ºó¾ÍÊÇÎóÂë¸öÊý Awgn_num_BER=sum(abs(demodata-data))
%%%%%%%%%%%%%%%%%%% % ½âµ÷²¿·Ö£¨ÈðÀû+¸ß˹£©
Ray_idata2=Ray_s.*a; Ray_qdata2=Ray_s.*b;
% Ray_idata3=zeros(1,nb/2); % Ray_qdata3=zeros(1,nb/2);
33