map_demod1.m
来自「短波信道抗多音干扰的性能分析及其仿真」· M 代码 · 共 75 行
M
75 行
rho_in_dB=9;
rho=10^(rho_in_dB/10);
N=10000;
BPH=1;
number_of_states=8;
fanout=2^BPH;
L=floor(log(number_of_states)/log(fanout));
n=5;
n1=floor(n/2);
dsource=[zeros(1,BPH*n1),randint(1,N),zeros(1,BPH*n1)];
depth_of_trellis=length(dsource);
f=zeros(1,depth_of_trellis);
D=0;
for i=1:depth_of_trellis
f(i)=G_func1(D,dsource(i),L);
D=f(i);
end
Eb=1;
sgma=sqrt(Eb/(2*rho));
demod_input=zeros(number_of_states,depth_of_trellis);
for i=1:depth_of_trellis
for j=0:number_of_states-1
if(j~=f(i))
rc=sgma*randn;
rs=sgma*randn;
else
rc=sqrt(Eb)+sgma*randn;
rs=sgma*randn;
end
demod_input(j+1,i)=rc^2+rs^2;
end
end
nextstate=zeros(number_of_states,fanout);
for i=0:number_of_states-1
for j=0:fanout-1
nextstate(i+1,j+1)=G_func1(i,j,L);
end
end
state_metric=zeros(fanout^n,1);
decis=zeros(1,N+n1);
symbol_matrix=zeros(fanout^n,n-1);
for i=1:fanout^(n-1)
symbol_matrix(i,1:n-1)=deci2bin(i-1,n-1);
symbol_matrix(i+fanout^(n-1),1:n-1)=symbol_matrix(i,1:n-1);
end
t=[zeros(fanout^(n-1),1);ones(fanout^(n-1),1)];
symbol_matrix=[symbol_matrix(:,1:n1),t,symbol_matrix(:,n1+1:n-1)];
latest_state=0;
mid_state=zeros(fanout^n,n);
for i=1:N
for j=1:fanout^n %求出第一次中间状态
middlestate=latest_state;
for k=1:n
mid_state(j,k)=nextstate(middlestate+1,symbol_matrix(j,k)+1);
middlestate=mid_state(j,k);
end
end
for j=1:fanout^n
for k=i:i+n-1
state_metric(j)=state_metric(j)+demod_input(mid_state(j,k-i+1)+1,k);
end
end
[C,I]=max((sum(reshape(state_metric,fanout^(n-1),fanout)))');
decis(i+n1)=I-1;
latest_state=nextstate(latest_state+1,decis(i)+1);
state_metric=zeros(fanout^n,1);
end
num_of_err=0;
for i=1:N
if(dsource(i+n1)~=decis(i+n1))
num_of_err=num_of_err+1;
end
end
p=num_of_err/N;
sprintf('p=%f',p)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?