一、为什么“fs = Rb x N”
其中, Rb(码元速率)、fs(采样率)、N(一个码元周期内对码元的采样点数)
先说结论,因为调制时,信源序列与调制信号(正弦信号)的点数必须一样,尤其是多路信源序列一起调制时,因为最终的已调信号储存在一个矩阵的不同行里,而矩阵不同行的列数必须一样,也就是说不同码元速率的码元系列,最终的采样点数都是一样的。
二、对码元速率分别为1Msymbol/s、2Msymbol/s 4Msymbol/s 和5Msymbol/s的信源经过汉明编码后序列进行调制
采样率(fs)、每个码元上的采样点数(N)和码元速率(Rb)直接的关系是:
fs = Rb x N
由实验要求我们可以知道:
Rb = 1 / 2 / 4 / 5 Msybol/s;
下面表格是采样率fs、码元速率Rb、不同码元速率序列的码元采样点数N和载波频率f的大小:
信源序列 | fs | Rb | N | f |
1、 | 1000 MHz | 1 Msymbol/s | 1000 | 90 MHz |
2、 | 2000 MHz | 2 Msymbol/s | 1000 | 100 MHz |
3、 | 4000 MHz | 4 Msymbol/s | 1000 | 110 MHz |
4、 | 5000 MHz | 5 Msymbol/s | 1000 | 120 MHz |
(1).观察4路已调信号
Figure1:码元速率为1Msymbol/s的信源序列经汉明码编码后波形及已调信号波形:
Figure2:码元速率为2 Msymbol/s的信源序列经汉明码编码后波形及已调信号波形:
Figure3:码元速率为4 Msymbol/s的信源序列经汉明码编码后波形及已调信号波形:
Figure4:码元速率为5 Msymbol/s的信源序列经汉明码编码后波形及已调信号波形:
Figure5:4路信源序列编码后波形与调制后已调信号波行:
代码:
clc;
clear;
close all;
%% 信源产生序列
m=zeros(4,100);%m是一个4行100列的矩阵
for i = 1:4
m(i,:)=randi([0,1],1,100);%m的每一行都是一组长度为100的随机序列
end
%% 信道编码
%使用MATLAB实现(7,4)汉明码编码
n=7;%码长
k=4;%信息位长
A=[1 1 1; 1 1 0;1 0 1;0 1 1];
%A代表了监督关系,监督关系是
%code(5)=code(1)^code(2)^code(3)
%code(6)=code(1)^code(2)^code(4)
%code(7)=code(1)^code(3)^code(4)
G=[eye(k) A];%生成矩阵
H=[A' eye(n-k) ];%校验矩阵
%编码
code = zeros(4,175); %对于编码后序列进行定义
A=[0 0 0 0];
for i = 1:4
for j = 1:4:100
A=[m(i,j),m(i,j+1),m(i,j+2),m(i,j+3)];%将每路信源序列分成四个一组,作为信息位。
A=mod(A*G , 2); %进行编码,四位的信息位变成七位的汉明码序列。
for z = 1:7:175
code(i,z) = A(1);%对编码后的汉明码序列赋值给code
code(i,z+1) = A(2);
code(i,z+2) = A(3);
code(i,z+3) = A(4);
code(i,z+4) = A(5);
code(i,z+5) = A(6);
code(i,z+6) = A(7);
end
end
end
%% DBPSK调制
Rb = [1000000,2000000,4000000,5000000];%四路码元系列的码元速率,单位为sybol/s
fs = [1000000000,2000000000,4000000000,5000000000];%采样频率,单位为Hz;
N = 1000;%每个码元上的采样点数
total_t = 175 ./ Rb ;%总时间,传输完175个码元的时间。
f = [90000000,105000000,110000000,120000000];%载波频率,单位为Hz
M = 175;%汉明码长度
signal_DBPSK=zeros(4,N*M);
for i = 1:4
t = 0:1/fs(i):total_t(i)-1/fs(i);%采样序列定义
%对码元系列采样
fz=ones(1,N); %定义复制的次数N,N为每码元的采样点数
code_lone = code(i,:);
x1=code_lone(fz,:); %复制的第1行复制N次
dnrz=reshape(x1,1,N*M); %产生单极性不归零矩形脉冲波形
snrz=2*dnrz-1; %产生双极性不归零矩形脉冲波形
signal_tiaozhi = sin(2*pi*f(i)*t);%调制信号
signal_DBPSK(i,:) = snrz.* signal_tiaozhi;%调制,产生已调信号。
figure;
subplot(211);
plot(t,snrz),axis([0,0.0000008 -1.2 1.2]),title('汉明码双极性不归零脉冲波形'),
xlabel('t/s'),ylabel('幅度');
subplot(212);
plot(t,signal_DBPSK(i,:)),axis([0,0.0000008 -1.2 1.2]),title('已调信号时域波形'),
xlabel('t/s'),ylabel('幅度');
end