五.matlab 程序及注释
1.主程序
num=10; %码元个数
tnum=200; %码元长度
N=num*tnum; %总长度
a=randi([0,1],1,num); %产生随机码序列
fc=0.1; %载波频率
dt=0.05; %采样间隔,采样频率为 20HZ
t=0:dt:9.99;
s=[];
c=[];
for i=1:num
if(a(i)==0)
A=zeros(1,tnum);
else
A=ones(1,tnum);
end
s=[s A]; %拼接形成信号矩阵 NRZ 码,共 2000 点
cs=sin(2*pi*fc*t); %载波信号,一个 CS200 点
c=[c cs]; %s,c 均为 2000 点,相当于 t 进行了扩展十倍,100s,但是采样间隔不变
end
figure(1);
subplot(4,1,1);
plot(s);
grid on;
xlabel('基带信号');
axis ([0 N -2 2]);
%写 BPSK 已调信号
s_NRZ=[];
for i=1:num
if(a(i)==0)
A=ones(1,tnum); %0 为原相位,1 为反相位
else
A=-1*ones(1,tnum);
end
s_NRZ=[s_NRZ,A];
end
e=s_NRZ.*c; %已调信号
figure(1);
subplot(4,1,2);
plot(e);
grid on;
xlabel('BPSK 已调信号');
axis ([0 N -2 2]);
%给已调信号加高斯噪声
SNR=5; %定义信噪比为 5db
snr=10^(SNR/10); %单位 1 信噪比
N0=1*1/(2*snr); %噪声功率,认为信号功率为 1/2,随机码
N0_DB=10*log10(N0); %噪声功率 db