?? multi_fh4fsk.asv
字號:
% This procedure simulates the Bit Error Probability performace of the
% FH/MFSK system with independent multitone jamming
Eb_to_Nj_in_dB=[10];% Eb_to_Nj_in_dB到Eb_to_Nj的轉換放到pp循環(huán)中了
Eb_to_No_in_dB=13.35;
Eb_to_No=10^(Eb_to_No_in_dB/10);
totalfreq_num=64;% 總共64個跳頻頻點
K=2;% 一個4FSK符號由兩個比特組成
M=4;% FH/4FSK,M=2^K
Q=1;
Eb=1;
Es=K*Eb;
sgma=sqrt(Eb/(2*Eb_to_No));
N=1000;
times=1000;
num_of_symbolerr=zeros(length(Eb_to_Nj_in_dB),times);
Ps=zeros(length(Eb_to_Nj_in_dB),1);
Pb=zeros(length(Eb_to_Nj_in_dB),1);
for pp=1:length(Eb_to_Nj_in_dB)
Eb_to_Nj=10^(Eb_to_Nj_in_dB(pp)/10);
Ej0=(Es*totalfreq_num)/(K*Q*Eb_to_Nj);% 每個干擾音的能量
for rep=1:times
datasymbolstream=randint(1,N,M);% 4進制數(shù)據(jù)符號流(符號為0~3)
PN=randint(1,N,totalfreq_num/M);% 整個頻段劃分為16個MFSK band(編號為0~15),PN用來選擇跳頻MFSK頻帶
R=zeros(M,N); % R矩陣用來存放每跳MFSK的M路能量輸出,N表示時間推移,每列為一跳
rc=zeros(
for i=1:N % 對每一個數(shù)據(jù)符號
f(i)=4*PN(i)+datasymbolstream(i);% 信號所在的頻率號0~63號
for j=0:M-1 %先給MFSK的每一路都加上噪聲
if(j==datasymbolstream(i))
rc(j+1)=raylrnd(sqrt(Es/2))+sgma*randn;
rs(j+1)=sgma*randn;
else
rc(j+1)=sgma*randn;
rs(j+1)=sgma*randn;
end
end
theta=2*pi*rand;% 信號音與干擾音之間的相對相位
J=gen_multijammer(Q,totalfreq_num);% J 矩陣中存放Q個干擾音所在的頻率號,干擾音所在頻率號范圍也是[0,63]而不是[1,64],J是個1行Q列的矩陣
jam_rayleigh=raylrnd(sqrt(Ej0/2));% 干擾音的幅度
for k=1:Q % 加入干擾
band_freq_num(k)=mod(J(k),M);%fjmod4取余數(shù)得到d,得到各個干擾音在某個MFSK band中的位置band_freq_num(k)=(0~3)
band_num(k)=(J(k)-band_freq_num(k))/M;%(fj-d)/4得商,得到各個干擾音處在第幾號(第band_num(k)號)MFSK band內=(0~15)
if(band_num(k)==PN(i))% 這個干擾音處在當前跳信息符號的MFSK band內
for j=0:M-1 % 這個干擾音處在MFSK band的第幾號頻率上
if(j==band_freq_num(k))
rc(j+1)=rc(j+1)+jam_rayleigh*cos(theta);
rs(j+1)=rs(j+1)+jam_rayleigh*sin(theta);
end
end
end
end
for j=0:M-1 % R是個M行N列的矩陣,每列代表每一跳內M路能量輸出,共N列代表數(shù)據(jù)符號流共N個數(shù)據(jù)符號
R(j+1,i)=rc(j+1)^2+rs(j+1)^2;% 解跳后信號所在的MFSK band 的 M 路能量輸出
end
end
[max_energy Decision]=max(R,[],1);% MFSK判決,找出每跳信號所在的那一MFSK band 中能量最大的那一路,注意Decision矩陣是下標,范圍是1-4,不是0-3
demodulation_output=Decision-1;% 把1-4轉換成0-3,demodulation_output就是解調輸出數(shù)據(jù)符號流
for i=1:N % 統(tǒng)計符號錯誤數(shù)
if(demodulation_output(i)~=datasymbolstream(i))
num_of_symbolerr(pp,rep)=num_of_symbolerr(pp,rep)+1;
end
end
end % 與最外層"多少遍" for rep=1:times循環(huán)對應的end
end % 與最最外層信干比循環(huán) pp=1:length(Eb_to_Nj_in_dB)對應的end
Ps=sum(num_of_symbolerr,2)/(N*times)
Pb=Ps*M/(2*(M-1))
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -