数字基带信号的系统仿真与设计matlab程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

,请自觉下载,转载请注明出处一共四个程序图片被压缩了,下载后放大会很清晰

1文件名为digit_baseband.m

%数字基带信号的功率谱密度digit_baseband.m

clear all;

close all;

Ts=1;

N_sample=8; %每个码元的抽样点数

dt=Ts/N_sample; %抽样时间间隔

N=1000; %码元数

%T=N*dt;

t=0:dt:(N*N_sample-1)*dt;

gt1=ones(1,N_sample); %NRZ非归零波形

gt2=ones(1,N_sample/2); %RZ归零波形

gt2=[gt2 zeros(1,N_sample/2)];

d=(sign(randn(1,N))+1)/2;

data=sigexpand(d,N_sample); %对序列间隔插入N_sample-1个0

st1=conv(data,gt1); %调用MATLAB的卷积函数

st2=conv(data,gt2);

d=2*d-1; %变成双极性序列

data=sigexpand(d,N_sample);

st3=conv(data,gt1);

st4=conv(data,gt2);

[f,st1f]=T2F(t,[st1(1:length(t))]);

[f,st2f]=T2F(t,[st2(1:length(t))]);

[f,st3f]=T2F(t,[st3(1:length(t))]);

[f,st4f]=T2F(t,[st4(1:length(t))]);

figure(1)

subplot(421)

plot(t,[st1(1:length(t))]);grid

axis([0 20 -1.5 1.5]);

ylabel('单极性NRZ波形');

subplot(422);

plot(f,10*log10(abs(st1f).^2/Ts));grid

axis([-5 5 -40 40]);

ylabel('单极性NRZ功率谱密度(dB/Hz)');

subplot(423)

plot(t,[st2(1:length(t))]);

axis([0 20 -1.5 1.5]);grid

ylabel('单极性RZ波形');

subplot(424);

plot(f,10*log10(abs(st2f).^2/Ts));

axis([-5 5 -40 40]);grid

ylabel('单极性RZ功率谱密度(dB/Hz)');

subplot(425)

plot(t,[st3(1:length(t))]);

axis([0 20 -1.5 1.5]);grid

ylabel('双极性NRZ波形');

subplot(426);

plot(f,10*log10(abs(st3f).^2/Ts));

axis([-5 5 -40 40]);grid

ylabel('双极性NRZ功率谱密度(dB/Hz)');

subplot(427)

plot(t,[st4(1:length(t))]);

axis([0 20 -1.5 1.5]);grid

ylabel('双极性RZ波形');

subplot(428);

plot(f,10*log10(abs(st4f).^2/Ts));

axis([-5 5 -40 40]);grid

ylabel('双极性RZ功率谱密度(dB/Hz)');

2 文件名为digit_ber.m

%数字基带接收机的性能digit_ber.m clear all;

close all;

EbN0dB=0:0.5:10;

N0=10.^(-EbN0dB/10);

sigma=sqrt(N0/2);

Pb=0.5*erfc(sqrt(1./N0));

%理论计算的误码率

for n=1:length(EbN0dB)

a=sign(randn(1,100000));

rk=a+sigma(n)*randn(1,100000);

dec_a=sign(rk);

ber(n)=sum(abs(a-dec_a)/2)/length(a); end

semilogy(EbN0dB,Pb);

hold;

semilogy(EbN0dB,ber,'rd-');

legend('理论值','仿真结果');

xlabel('Eb/N0(dB)');

ylabel('Pb');

3 文件名为sigexpand.m

function [out]=sigexpand(d,M)

%将输入的序列扩展成间隔为N-1个0的序列

N=length(d);

out=zeros(M,N);

out(1,:)=d;

out=reshape(out,1,M*N);

4 文件名为T2F.m

function [f,sf]=T2F(t,st)

%This is a function using the FFT funcion to calculate a signal's Fourier %Translation

%input is the time and the signal vertors,the length of time must greater %than 2

%Output is the frequency and the signal spectrum

dt=t(2)-t(1);

T=t(end);

df=1/T;

N=length(st);

相关文档
最新文档