BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #9110同步于 2012/6/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

北邮那本通信原理matlab仿真中的一个单极性归零码的例子,实现

buptronin
2012/6/17镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
buptronin机器人#1 · 2012/6/17
呃。。。。。。题目漏掉了!补充:实现单极性归零码的时候为什么要使用sigexpand来扩充,而且扩充的都是0,这个不符合从随机序列转换成基带信号的原理啊,扩充以后不是0特别多,1则是独立的点???望高手指教,这其中的实现原理!谢谢
buptronin机器人#2 · 2012/6/17
%数字基带信号的功率谱密度 clear all; close all; Ts=1; N_sample=8; %每个码元的抽样点数 dt=Ts/N_sample; %抽样时间间隔 N=1000; %码元数 T=8000; t=0:dt:(N*N_sample-1)*dt; %N*N_sample是总的抽样点数 gt1=ones(1,N_sample); %NRZ非归零波形 gt2=ones(1,N_sample/2); %RZ归零波形 gt2=[gt2 zeros(1,N_sample/2)]; %生成全零函数 mt3=sinc((t-5)/Ts); %sin(pi*t/Ts)/(pi*t/Ts)波形,截断取10个码元 gt3=mt3(1:10*N_sample); d=(sign(randn(1,N))+1)/2; %randn函数是产生服从正态分布的随机数,randn(m,n)产生一个m*n的随机矩阵,这些数服从正态分布,而sign函数则是符号函数,大于零的取1,小于0的取-1,等于0则去0 %这个函数就是实现了:sign函数以后生成了-1到1的随机数,加上1后则是变成了0到2的随机序列,然后在这个基础上除以2则变成了0到1的随机序列了 data=sigexpand(d,N_sample); %对序列d的每两个数中插入N_sample-1个0,对数据进行扩充,相当于在原来的d序列上插入了(d-1)*(N_sample-1)个点 st1=conv(data,gt1); %调用Matlab的卷积函数,把扩充后的序列与gt1函数卷积,以便为后面的傅里叶变化做准备,相当于调制函数 st2=conv(data,gt2); d=2*d-1; data=sigexpand(d,N_sample); st3=conv(data,gt3); [f,st1f]=T2F(t,[st1(1:length(t))]);%傅里叶变换,调用t2f函数,这个函数是通用的,可以不管原理 [f,st2f]=T2F(t,[st2(1:length(t))]); [f,st3f]=T2F(t,[st3(1:length(t))]); figure(1) subplot(3,2,1) plot(t,[st1(1:length(t))]);grid axis([0,20,-1.5,1.5]);ylabel('单极性NRZ波形'); subplot(3,2,2); plot(f,10*log10(abs(st1f).^2/T));grid axis([-5,5,-40,10]);ylabel('单极性NRZ功率谱密度(dB/Hz)'); subplot(3,2,3); plot(t,[st2(1:length(t))]); axis([0,20,-1.5,1.5]);grid ylabel('单极性RZ波形'); subplot(3,2,4); plot(f,10*log10(abs(st2f).^2/T)); axis([-5,5,-40,10]);grid ylabel('单极性RZ功率谱密度(dB/Hz)'); subplot(3,2,5) plot(t-5,[st3(1:length(t))]); axis([0,20,-2,2]);grid ylabel('单极性sinc波形');xlabel('t/Ts'); subplot(3,2,6) plot(f,10*log10(abs(st3f).^2/T)); axis([-5,5,-40,10]);grid ylabel('sinc波形功率谱密度(dB/Hz)');xlabel('f*Ts');