📄 send.m
字号:
function Pb=Send(N,Source,SNR_in_dB);
Es=1; %符号能量
snr=10^(SNR_in_dB/10); %信噪比
sgma=sqrt(Es/snr)/2; %噪声标准方差
Ts=1; %符号间隔
fc=2; %载波频率
dt=1/32;%时域分辨率
seg=20; %每seg位为一组
for cycle0=1:N/seg,
S=Source(((cycle0-1)*seg+1):cycle0*seg);
%下面为编码部分
cycle2=1;
state=[0,0,0];
for cycle1=1:(seg/2+2)
temp2=state(3);
state(3)=xor(S(cycle2),state(2));
state(2)=xor(S(cycle2+1),state(1));
state(1)=temp2;
z0=state(3);
z1=S(cycle2);
z2=S(cycle2+1);
cycle2=cycle2+2;
%每个分组后加入四个冗余比特使返回到000状态
if(cycle1==seg/2)
if(state==[0,0,0]),
S=[S,0,0,0,0];
elseif(state==[0,0,1]),
S=[S,0,0,0,1];
elseif(state==[0,1,0]),
S=[S,1,0,0,0];
elseif(state==[0,1,1]),
S=[S,1,0,0,1];
elseif(state==[1,0,0]),
S=[S,0,1,0,0];
elseif(state==[1,0,1]),
S=[S,0,1,0,1];
elseif(state==[1,1,0]),
S=[S,1,1,0,0];
else
S=[S,1,1,0,1];
end
end
a=z2*4+z1*2+z0;
A=a*pi/4;
Angel(cycle1)=A /pi;
nc=gngauss(sgma);
ns=gngauss(sgma);
yy(cycle1)=Es*(cos(A)+j*sin(A));
for t=(cycle1-1)*Ts+dt:dt:cycle1*Ts,
%频带信号
y=sqrt(Es)*(cos(2*pi*fc.*t+A)+nc*cos(2*pi*fc.*t)-ns*sin(2*pi*fc.*t)+j*(sin(2*pi*fc.*t+A)+ns*cos(2*pi*fc.*t)-nc*sin(2*pi*fc.*t)));
y_no_Noise=cos(2*pi*fc.*t+A)+j*sin(2*pi*fc.*t+A);
Re(t/dt)=real(y);
Im(t/dt)=imag(y);
Re_no_Noise(t/dt)=real(y_no_Noise);
Im_no_Noise(t/dt)=imag(y_no_Noise);
if(t==(seg/2+2)*Ts),
R(((cycle0-1)*seg+1):cycle0*seg)=Demodulation(y,seg/2,t);
else
Demodulation(y,seg/2,t);
end
end
end
end
figure(1)
hold on
grid on
title('发送信号(无噪声干扰)的星座图:')
Stars_plot(yy);
hold off
figure(3)
Angel %显示信号的初相
t=dt:dt:(5+2)*Ts;
R_e=Re(t/dt);
I_m=Im(t/dt);
subplot(2,1,1)
plot(t,R_e,':r'),axis([dt,(5+2)*Ts,-1.2,1.2]),title('调制信号(I路)为:');
subplot(2,1,2)
plot(t,I_m,':k'),axis([dt,(5+2)*Ts,-1.2,1.2]),title('调制信号(Q路)为:');
figure(4)
t=dt:dt:(5+2)*Ts;
R_e_noNoise=Re_no_Noise(t/dt);
I_m_noNoise=Im_no_Noise(t/dt);
subplot(2,1,1)
plot(t,R_e_noNoise,':r'),axis([dt,7*Ts,-1.2,1.2]),title('调制信号(I路)为:');
subplot(2,1,2)
plot(t,I_m_noNoise,':k'),axis([dt,7*Ts,-1.2,1.2]),title('调制信号(Q路)为:');
R; %%%译码输出
%%%%计算误比特律
Pb=Error_Pb(R,Source)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -