📄 demo_hdb3.m
字号:
%HDB3码的时域图及功率谱密度演示。
clear
close all
k=14;%取样点数=2^k
N=2^k; %采样点数
L=64; %每码元采样点数
M=N/L; %码元数
Rb=1; %码元速率
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域取样间隔
df=1/(N*dt); %频域取样间隔
T=N*dt; %时域截短时间
Bs=N*df/2; %频域系统带宽
t=[-T/2+dt/2:dt:T/2]; %时域横坐标
f=[-Bs+df/2:df:Bs]; %频域横坐标
%定义全零距阵,将来作为求功率的累加器
Ep=zeros(size(f));
for ii=1:30
a=rand(1,M)>0.75; % 产生低密度的二进制序列
b=hdb3(a);
hdb=zeros(L,M);
init=zeros(L,M);
for loop=1:L
init(loop,:)=a; %init第loop行元素
end
for loop=1:L
hdb(loop,:)=b; %HDB3第loop行元素
end
hdb=reshape(hdb,1,N);
init=reshape(init,1,N);
HDB=fftshift(fft(hdb))*dt;
P=HDB.*conj(HDB)/T;
Ep=(Ep*(ii-1)+P)/ii;
end
%画信号序列及HDB3码
subplot(5,1,[1 2 3]);
plot(t,init+1,'m',t,hdb-1,'b');
grid;
axis([0,T/10,-2.5,4]);
xlabel('t(Tb)');
ylabel('HDB3 -- s(t)');
set(gca,'XTick',[0:1:T/10]); %设置网格线
legend('原始序列(抬高1V)','HDB3码(降低1V)');
title('原始序列及其HDB3码');
%画功率谱密度
subplot(5,1,[4 5]);
aa=10*log10(Ep+eps);
plot(f,aa,'b');
grid;
axis([-5,5,-50,0]);
xlabel('f(Rb)');
ylabel('Ps(f)');
title('HDB3码功率谱密度');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -