?? simple_dsss.m
字號(hào):
%File simple_dsss.m
code_length=2000; %信息碼元個(gè)數(shù)
SF=63; %擴(kuò)頻增益
fs=31500000; %采樣率
f=50000; %信息碼速率
%產(chǎn)生信息碼
N=1:code_length;
rand('seed',0);
x=sign(rand(1,code_length)-0.5); %x為信息碼
for i=1:code_length
s((1+(i-1)*fs/f):i*fs/f)=x(i); %每個(gè)信息碼元內(nèi)含fs/f=630個(gè)采樣點(diǎn)
end
%為隨機(jī)碼由MSequence產(chǎn)生
%產(chǎn)生偽隨機(jī)碼
length=SF*code_length; %擴(kuò)頻后的碼數(shù)
PN_code=MSequence(SF+1);
x_code=reshape(PN_code.'*ones(1,code_length),1,length); %把0,1序列碼變換為-1,1調(diào)制碼
for i=1:(code_length*SF)
w_code((1+(i-1)*10):i*10)=x_code(i); %k_code為擴(kuò)頻碼,每個(gè)碼元內(nèi)含10個(gè)采樣點(diǎn)
end
for i=1:SF
jkw_code((1+(i-1)*10):i*10)=PN_code(i);
end
%擴(kuò)頻
k_code=s.*w_code; %k_code 為擴(kuò)頻碼
%BPSK調(diào)制
for i=1:length
AI=2;
dt=fs/(f*SF);
n=0:dt/9:dt; %一個(gè)載波周期內(nèi)采樣10個(gè)點(diǎn)
cI=AI*cos(2*pi*f*SF*n/fs);
signal_t((1+(i-1)*10):i*10)=k_code((1+(i-1)*10):i*10).*cI;
end
%解調(diào)
AI=1;
dt=fs/(f*SF);
n=0:dt/9:dt; %一個(gè)載波周期內(nèi)采樣八個(gè)點(diǎn)
cI=AI*cos(2*pi*f*SF*n/fs);
for i=1:length
signal_r((1+(i-1)*10):i*10)=signal_t((1+(i-1)*10):i*10).*cI;
end
%低通濾波(代通采樣)
wn=(f*SF)/fs; %截止頻率wn=fn/(fs/2),這里的fn為信息碼(擴(kuò)頻碼)的帶寬
b=fir1(16,wn);
H=freqz(b,1,code_length*SF*10);
signal_d=filter(b,1,signal_r);
%解擴(kuò)
jk_code=signal_d.*w_code;
plot(jk_code)
IncomingChips=reshape(jk_code,SF*10,code_length);
jk_code=jkw_code*IncomingChips;
DetectedSymbols=sign(jk_code);
%求BER
ErrorVector=0.5*abs(DetectedSymbols-x);
Errorsum=sum(ErrorVector);
BER=Errorsum/code_length;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -