调制
function transmittedSignal=BPskModu(signal)
d=signal*2-1;
f=1000000;
t=linspace(0,0.000001,8);
carrier=sin(2*pi*f*t);
transmittedSignal=[];
for i=1:length(d)
transmittedSignal=[transmittedSignal,d(i)*carrier];
end
figure
plot(1:length(transmittedSignal),transmittedSignal);
title('调制后的波形');
end
主函数
clear all
close all
signal=informationSource()
transmittedSignal=BPskModu(signal);
signal0=gussianchannel(transmittedSignal);
bitstream=demoBpsk(signal0);
信源
function signal=informationSource()
signal=rand(1,8)>=0.5;
end
加噪声
function signal0=gussianchannel(transmittedSignal)
signal0=sqrt(2)*transmittedSignal;
signal0=awgn(signal0,30,0);
figure
plot(1:length(signal0),signal0);
title('加高斯白噪声后的波形');
end
解调
function bitstream=demoBpsk(signal0)
load num
bandpass=Num1;
lowpass=Num2;
signal1=filter(bandpass,1,signal0);
figure
plot(1:length(signal1),signal1);
title('通过带通滤波器后的波形');
f=1000000;
t=linspace(0,0.000008,64);
carrier=-sin(2*pi*f*t);
figure
plot(1:length(carrier),carrier);
title('载波的波形');
signal2=signal1.*carrier;
figure
plot(1:length(signal2),signal2);
title('乘以载波后的信号');
signal3=filter(lowpass,1,signal2);
figure
plot(1:length(signal3),signal3);
title('通过低通滤波器后波形');
IN=fix(length(lowpass)/2);
bitstream=[];
LL=8;
j=IN+LL/2;
while (j<=length(signal3))
if signal3(j)>0
bitstream=[bitstream,signal3(j)>0];
end
if signal3(j)<0
bitstream=[bitstream,signal3(j)>0];
end
j=j+LL;
end
bitstream
end
滤波器参数:
带通: 8 0.09 0.999990 1.000010 2.1 特殊化阶数为10
低通 8 1 2.5 阶数也为10