【正文】
_qpskf).^2/T))。axis([fx1,fx2,fy1,fy2])。xlabel(39。頻率(Hz)39。)。ylabel(39。功率譜密度(dB/Hz)39。)。title(39。解調(diào)信號功率譜圖 Pn=10dB39。)。grid。%眼圖eyediagram(y_qpsk,32,2,8)。x=d_NRZ1(1:fc*N*N_sample)+j*d_NRZ2DLY(1:fc*N*N_sample)。%星座圖scatterplot(x)。axis([4,4,4,4])。grid。xlabel(39。實部39。)。ylabel(39。虛部39。)。title(39。星座圖39。)。d_NRZJ=d_NRZ(1:fc*N*N_sample)。p=find(d_NRZJ0)。d_NRZJ(p)=0。q=find(qr_qpsk0)。qr_qpsk(q)=0。r=find(d_NRZ0)。d_NRZJ(r)=1。s=find(qr_qpsk0)。qr_qpsk(s)=1。figure[num,rt] = biterr(d_NRZJ,qr_qpsk)。Ps = erfc(sqrt(EsN0)*sin(pi/M))。 %通過一系列計算可以得到 % %由于 %可以進一步得到,semilogy(EsN0dB,Ps,39。rd 39。)。xlabel(39。Es/N0(dB)39。)。 ylabel(39。誤碼率39。)。grid on。title(39。QPSK系統(tǒng)的誤碼率39。)。⑵用到的子函數(shù)function [out]=sigexpand(d,M)% 將輸入的序列擴展成間隔為 N1 個 0 的序列;N=length(d)。out=zeros(M,N)。out(1,:)=d。out=reshape(out,1,M*N)。function[f,sf]=T2F(t,st)。%計算信號的傅里葉變換%Input is the time and the signal vectors,the length of time must greater%than 2%Output is the frequency and the signal spectrumdt=t(2)t(1)。T=t(end)。df=1/T。N=length(st)。f=N/2*df:df:N/2*dfdf。sf=fft(st)。sf=T/N*fftshift(sf)。function [t,st]=F2T(f,sf)%計算信號的反傅里葉變換df=f(2)f(1)。Fmx=(f(end)f(1)+df)。dt=1/Fmx。N=length(sf)。T=dt*N。%t=T/2:dt:T/2dt。t=0:dt:Tdt。sff=fftshift(sf)。st=Fmx*ifft(sff)。% 低通濾波器function [t,st]=lpf(f,sf,B)% f: frequency samples % sf: input data spectrum samples% B: lowpass39。s bandwidth with a rectangle lowpass% output: % t: sample% st: output data39。s time samplesdf = f(2)f(1)。T = 1/df。hf = zeros(1,length(f))。bf = [floor(B/df):floor(B/df)]+floor(length(f)/2)。%規(guī)定低通濾波器的寬度hf(bf) = 1。 %低通濾波器為理想的矩形窗,其加權(quán)值為1yf = hf .* sf。 %頻域的相乘[t,st] = F2T(f,yf)。st = real(st)。備注:如果要畫實際誤碼率曲線可以在程序最后使用循環(huán),框架如下m=1。jj=1。qe=[]。for pl=0:15 …… %省略部分為加噪解調(diào)部分,和前面程序相同,去除畫圖的程序[num,rt] = biterr(d_NRZJ,qr_qpsk)。qe(jj)=rt。jj=jj+1。endQe=qe(1:16)。semilogy(EsN0dB,Qe,‘b‘); %用semilogy畫圖必須和Qe前面的序列長度相同(五)實驗心得在這次課程設計過程中,開始一步一步更深層次的理解運用數(shù)字信號的相移鍵控調(diào)制和解調(diào)。在原來所學的基礎上,用matlab對oqpsk的調(diào)制和解調(diào)進行編程,從調(diào)制解調(diào)以及加入噪聲都是自己一步一步去寫程序或上網(wǎng)查資料,比如如何產(chǎn)生二進制序列,如何延時以及去除延時,在不斷的摸索當中,學會了好多函數(shù)的應用以及特定的功能實現(xiàn),例如reshape(),biterr(),find(),scatterplot(),eyediagriam(),zeros(),ones()等函數(shù)的應用,比如產(chǎn)生特定頻率的基帶信號可以用經(jīng)過sigexpand函數(shù)擴展后的信號與矩形脈沖相卷得到,更重要的是學會了數(shù)據(jù)在matlab中的儲存方式,比如本次試驗中輸入序列長度為500,采樣率為32,載波頻率為2,則這個序列在內(nèi)存中是一個長度為32000的一位橫矩陣。很多運算都是需要兩個序列長度相等,而數(shù)據(jù)相卷后長度會變長,在以后的處理過程中要舍掉后面多余的。Matlab中有很多自帶的函數(shù),但變量數(shù)據(jù)的格式是有規(guī)定的,如biterr()規(guī)定變量只能是0或1,如果原來的1,1作為變量的話就會報錯。