【数字信号】基于DTMF双音多频电话拨号仿真含Matlab
源码
1 简介
双极性归零码仿真
2 部分代码
3 仿真结果
close allclear all%采样点数的设置k=14;%每码元采样数的设置L= 32;N=2^k;M=N/L;%M为码元个数
dt=1/L;%时域采样间隔T=N*dt;%时域截断区间df=1.0/T;%频域采样间隔Bs=N*df/2;%频域截断区间
t=linspace(-T/2,T/2,N);%产生时域采样点f=linspace(-Bs,Bs,N);%产生频域采样点
EP1=zeros(size(f));EP2=zeros(size(f));EP3=zeros(size(f));%程序第2部分:随机产生1000
列0、1信号序列,分别对其进行双极性归零编码和不归零%编码,并且求各自的功率谱密度,求功率谱密度的
均值for x=1:1000%取1000次样值 a=round(rand(1,M));%产生一个长度为M的随机序列a,0和1等
概出现 nrz=zeros(L,M);%产生一个L行M列的nrz矩阵,初始化为全0矩阵 rz=zeros(L,M);%产
生一个L行M列的rz矩阵,初始化为全0矩阵 for i=1:M if a(i)==1
nrz(:,i)=1;%使nrz矩阵第i列全部元素都为1 rz(1:L/2,i)=1;%使rz矩阵第i列前L/2个
元素为1 else nrz(:,i)=-1;%使nrz矩阵第i列全部元素都为-1
rz(1:L/2,i)=-1;%使rz矩阵第i列前L/2个元素为-1 end end %分别重排nrz、rz
矩阵为1行N列的矩阵 nrz=reshape(nrz,1,N); rz=reshape(rz,1,N); %做傅里叶变换并
算出功率谱密度 NRZ=t2f(nrz,dt); P1=NRZ.*conj(NRZ)/T; RZ=t2f(rz,dt);
P2=RZ.*conj(RZ)/T; %求功率谱密度的均值 EP1=(EP1*(x-1)+P1)/x; EP2=(EP2*(x-
1)+P2)/x;end%程序第3部分:画波形图和功率谱密度曲线figure(1)%开启一个编号为1的绘图窗口
subplot(2,2,1);plot(t,nrz)%画双极性不归零码的时域图
axis([-5,5,min(nrz)-0.1,max(nrz)+0.1])set(gca,'FontSize',12)title('双极性不归零
码','fontsize',12)xlabel('t(ms)','fontsize',12)ylabel('nrz(t)','fontsize',12)grid
onsubplot(2,2,2);plot(t,rz)%画双极性归零码的时域图
axis([-5,5,min(rz)-0.1,max(rz)+0.1])set(gca,'FontSize',12)title('双极性归零
码','fontsize',12)xlabel('t(ms)','fontsize',12)ylabel('rz(t)','fontsize',12)grid
on%figure(3)%开启一个编号为3的绘图窗口% P1B=30+10*log10(EP1+eps);%将功率谱密度的单位转换
成dB%设置窗口3左上角的位置在距屏幕左侧0像素、下侧50像素的地方,长为340像素,宽为300像素%
set(3,'position',[0,50,340,300])subplot(2,2,3);plot(f,EP1)%画双极性不归零码的功率谱密
度图axis([-5,5,0,1.2])set(gca,'FontSize',12)title('双极性不归零码功率谱密度
图','fontsize',12)xlabel('f(kHz)','fontsize',12)ylabel('P1(f)','fontsize',12)grid
on%figure(4)%开启一个编号为4的绘图窗口% P2B=30+10*log10(EP2+eps);%将功率谱密度的单位转换
成dB%设置窗口4左上角的位置在距屏幕左侧340像素、下侧50像素的地方,长为340像素,宽为300像素%
set(4,'position',[340,50,340,300])subplot(2,2,4);plot(f,EP2)%画双极性归零码的功率谱密
度图axis([-5,5,0,0.3])set(gca,'FontSize',12)title('双极性归零码功率谱密度
图','fontsize',12)xlabel('f(kHz)','fontsize',12)ylabel('P2(f)','fontsize',12)grid
on
评论0