資源簡介
東西真的很不錯(cuò) 畢業(yè)設(shè)計(jì)專用。。。。。。。。。。。。。
代碼片段和文件信息
function?[]=qdpsk()
t0=0.004999;???
%?0.004999?50個(gè)碼元?0.049999?500個(gè)碼元??0.099999?1000個(gè)碼元
%?碼元寬度?0.0001s,?每個(gè)碼元100個(gè)采樣點(diǎn)
%輸入至少為10個(gè)碼元以上
ts=0.000001;
fc=50000;???%載波頻率
snr=20;?%信噪比,以dB來表示
snr_lin?=10^(snr/10);?%dB轉(zhuǎn)換
fs=1/ts;
df=0.3;??%頻率分辨率
t=(0:ts:t0);
N=length(t)/100;???%計(jì)算輸入二進(jìn)制數(shù)字序列的長度
%載波信號生成
c0=cos(2*pi*fc.*t);??????????%?0
c1=cos(2*pi*fc.*t+pi/2);?????%?pi/2
c2=cos(2*pi*fc.*t+pi);???????%?pi
c3=cos(2*pi*fc.*t+3/2*pi);???%?3/2pi
%生成消息信號(二進(jìn)制數(shù)字序列)
m2=zeros(1N);???%初始化變量
%m2(1)、m2(2)不賦值,清零處理
%數(shù)字序列從m2(3)開始計(jì)算
for?i=3:N
????m2(i)=fix(2*rand(1));
end
%將二進(jìn)制數(shù)字序列轉(zhuǎn)換為時(shí)域信號
m2_time=zeros(1N*100);???%初始化變量
for?k=1:N
????for?i=(100*k-99):(100*k)
?????????m2_time(i)=m2(k);
????end???
end
%繪制二進(jìn)制數(shù)字基帶序列(不歸零碼型)
%plot(tm2_time)
%axis([0?0.001?-0.5?1.5])
%碼變換
%將絕對碼轉(zhuǎn)換為相對碼m2_d
%第一組相對碼設(shè)定為?00
m2_d=zeros(1N);
for?i=3:2:(N-1)
????if?m2(i)==0&&m2(i+1)==0
????????if?m2_d(i-2)==0&&m2_d(i-1)==0
????????????m2_d(i)=0;m2_d(i+1)=0;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==0
????????????m2_d(i)=1;m2_d(i+1)=0;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==1
????????????m2_d(i)=1;m2_d(i+1)=1;
????????else
????????????m2_d(i)=0;m2_d(i+1)=1;
????????end
????elseif?m2(i)==1&&m2(i+1)==0
????????if?m2_d(i-2)==0&&m2_d(i-1)==0
????????????m2_d(i)=1;m2_d(i+1)=0;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==0
????????????m2_d(i)=1;m2_d(i+1)=1;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==1
????????????m2_d(i)=0;m2_d(i+1)=1;
????????else
????????????m2_d(i)=0;m2_d(i+1)=0;
????????end???????
????elseif?m2(i)==1&&m2(i+1)==1
????????if?m2_d(i-2)==0&&m2_d(i-1)==0
????????????m2_d(i)=1;m2_d(i+1)=1;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==0
????????????m2_d(i)=0;m2_d(i+1)=1;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==1
????????????m2_d(i)=0;m2_d(i+1)=0;
????????else
????????????m2_d(i)=1;m2_d(i+1)=0;
????????end
????else
????????if?m2_d(i-2)==0&&m2_d(i-1)==0
????????????m2_d(i)=0;m2_d(i+1)=1;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==0
????????????m2_d(i)=0;m2_d(i+1)=0;
????????elseif?m2_d(i-2)==1&&m2_d(i-1)==1
????????????m2_d(i)=1;m2_d(i+1)=0;
????????else
????????????m2_d(i)=1;m2_d(i+1)=1;
????????end
????end
end
%載波調(diào)制:相位選擇法
%?00---0?10---90?11---180?01---270
%QDPSK調(diào)制
qdpsk=zeros(1N*100);???????????%初始化
for?k=1:(N/2)
????for?i=(100*k-99):(100*k)
??????if?m2_d(2*k-1)==0&&m2_d(2*k)==0
??????????qdpsk(i)=c0(i);?
??????elseif?m2_d(2*k-1)==1&&m2_d(2*k)==0
??????????qdpsk(i)=c1(i);
??????elseif?m2_d(2*k-1)==1&&m2_d(2*k)==1?
??????????qdpsk(i)=c2(i);??
??????else
??????????qdpsk(i)=c3(i);??
?????end
????end??????
end
%計(jì)算信號功率和噪聲功率
signal_power=spower(qdpsk(1:length(t)));?%計(jì)算已調(diào)信號功率
noise_power=signal_power/snr_lin;
noise_std=sqrt(noise_power);????????????%計(jì)算噪聲的標(biāo)準(zhǔn)方差
noise=noise_std*randn(1length(t));?????%生成噪聲
%將噪聲疊加至QDPSK已調(diào)信號
qdpsk_n=qdpsk+noise;
%本地載波生成
c_l1=cos(2*pi*fc.*t);
c_l2=sin(2*pi*fc.*t);
%相乘器
%分為2個(gè)支路,分別標(biāo)記為1和2
qdpsk_dem11=qdpsk_n.*c_l1;
qdpsk_dem12=qdpsk_n.*c_l2;
%將2兩個(gè)支路的信號轉(zhuǎn)換到
評論
共有 條評論