最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

信号与通信仿真实验报告

来源:动视网 责编:小OO 时间:2025-10-04 18:32:16
文档

信号与通信仿真实验报告

现代通信原理与技术信号与通信仿真设计实习报告姓名:班级:学号:一实验目的在本实验中使用的软件工具是MATLAB。设计本实验的目的是希望在以下几方面有所收获:1.会MATLAB软件的最基本运用。MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是比较合适的。2.了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。3.加深对信号与系统和通信原理及其相关课程内容的理解。二实验特点与硬件实验相比,软件实验具如下一些特点:1.软件实验具有广泛的实用
推荐度:
导读现代通信原理与技术信号与通信仿真设计实习报告姓名:班级:学号:一实验目的在本实验中使用的软件工具是MATLAB。设计本实验的目的是希望在以下几方面有所收获:1.会MATLAB软件的最基本运用。MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是比较合适的。2.了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。3.加深对信号与系统和通信原理及其相关课程内容的理解。二实验特点与硬件实验相比,软件实验具如下一些特点:1.软件实验具有广泛的实用
现代通信原理与技术

信号与通信仿真设计

姓名: 

班级:

学号:

一 实验目的

在本实验中使用的软件工具是MATLAB。设计本实验的目的是希望在以下几方面有所收获:

1.会MATLAB软件的最基本运用。

MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是比较合适的。

2.了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。

3.加深对信号与系统和通信原理及其相关课程内容的理解。

二 实验特点

与硬件实验相比,软件实验具如下一些特点:

1.软件实验具有广泛的实用性和极好的灵活性。在硬件实验中改变系统参数也许意味着要重做硬件,而在软件实验中这只是该一两个数据,或者只是在屏幕上按几下鼠标。

2.软件实验更有助于我们较为全面地研究通信系统。有许多问题,通过硬件试验来研究可能非常困难,但在软件实验中却易于解决。 

3.硬件实验的精确度取决于元器件及工艺水平,软件实现的精确度取决于CPU的运算速度或者说是程序的运算量。

4.软件实验开发周期短,成本低。

三 上机实验要求

1.掌握matlab的基本操作及了解基本的仿真方法,分析运行范例程序。

2.按以下要求编制仿真程序并调试运行 

(1)基本信号的仿真

(2)模拟调制与解调的仿真

(3)数字基带传输码型的仿真

(4)数字调制与解调的仿真

(5)脉冲编码调制仿真

四 实验内容

1、基本信号的仿真

(1)产生并绘出以下信号:

a单位脉冲序列

b单位阶跃序列

c正弦信号及其频谱

d周期锯齿波sawtooth()

e周期方波square()

f实指数序列y(n)=2n

g sin2πf1t*cos2πf2t   f1=50Hz  f2=2000Hz

(2)产生一条-2到2之间的Sa(200t)曲线。

(3)产生下面信号,并绘出频谱

t 0s(t)= -t+ t0/4 t0/4t-t0 3t0/42、模拟调制与解调的仿真

高斯噪声的产生:设高斯噪声限带为(-Bs,Bs),双边带功率谱密度为,则总功率为,设高斯噪声幅度为x,则有:=,,所以高斯噪声可表示成x=sqrt(Bs*no)*randn(1,M)(M为随机码元个数)

(1)DSB调制与解调

设消息信号m(t)的表达式为:m(t)= sin(2*pi.*t),已调信号的时域表达式为:u(t)=m(t)c(t)=Ac*m(t)cos(2πfct) 。假设用信号m(t)以DSB方式调制载波c(t)=cos(2πfct),所得到的已调信号记为u(t)。绘制调制信号、已调信号和解调信号等各相关点处的时域波形和频谱,加上高斯白噪声进行对比。

(2)AM调制与解调

AM调制信号的时域表达式为:u(t)= AC[1+amn(t)]cos(2πfct)。这里a是调制指数,mn(t)是经过归一化处理的消息信号,式中mn(t)=m/max(abs(m))。给定的调制指数a=0.8,绘制调制信号、已调信号和解调信号等各相关处点的时域波形和频谱。

3、数字基带信号的码型的仿真

(1)编程实现单极性非归零码

(2)编程实现双极性归零码,占空比50%

原理流程图如下:

(3)编程实现双相码

原理流程图如下:

(4)编程实现AMI码

原理流程图如下:

(3)画出a=0,0.5,1的升余弦滚降系统频谱,并画出其各自对应的时域波形。

(4)设基带传输系统响应是a=1的升余弦滚降系统,画出在接收端的基带数字信号波形及其眼图。

实现原理如下:

4、数字调制与解调的仿真

1. 2FSK调制和解调

发送的二进制信息序列为100110000101,根据2FSK调制和解调的原理框图,绘出的各点波形及其频谱或功率谱,加上噪声作对比。

原理流程图如下:

2. 2PSK调制和解调

发送的二进制信息序列为100110000101,根据2FSK调制和解调的原理框图,绘出的各点波形及其频谱或功率谱,加上噪声作对比。

原理流程图如下:

五 实验结果

1、基本信号的仿真

(1)产生并绘出以下信号:

a单位脉冲序列

%单位脉冲序列,maichong.M

n=1:50;    %定义序列的长度是50

x=zeros(1,50)

%MATLAB 中数组下标从 1 开始

x(1)=1;

plot(n,x);    stem(x);

title('单位冲击信号序列');

b单位阶跃序列

%单位阶跃序列,jieyue.m

for i=1:50; %定义序列的长度是 50

if i>0 x(i)=1;

   else       x(i)=0;

   end

end

plot(i,x);    stem(x);

title('单位阶跃序列');

axis([-10 30 0 1]);

c正弦信号及其频谱

%正弦信号及其频谱,sine.m

x=0:0.1:2*pi;

y=sin(x);

Y=fft(y,100)

subplot(2,1,1); 

plot(x,y)         %绘制信号图形

title('正弦信号')

axis([0 6 -1 1])

subplot(2,1,2); 

stem(Y)        %绘制信号的频谱

title('正弦信号频谱')

axis([0 20 -20 20]);

d周期锯齿波sawtooth()

%周期锯齿波,jizhibo.m

n=[-3.14*4:0.01:3.14*4];

x=sawtooth(n);

plot(n,x)

title('周期锯齿波')

e周期方波square()

%周期方波,fangbo.m

y=square(n);

plot(n,y)

title('周期方波')

axis([0 10 -2 2])

f实指数序列y(n)=2n

%实指数序列y(n)=2.^n,shizhishu.m

n=1:0.1:20;

y=2.^n;

stem(y);

title('实指数序列y(n)=2.^n');

axis([0 200 0 100000])

g.y=sin2πf1t*cos2πf2t

(f1=50Hz  f2=2000Hz)

%g.m

n=[-1:0.01:1];

f1=50; f2=2000;

y=sin(2*pi*f1*n).*cos(2*pi*f2*n;

plot(n,y)

title('y=sin2πf1n cos2πf2n (f1=50Hz  f2=2000Hz)')

心得体会:

通过实验熟悉了matlab的一些基本指令的使用,知道了一些产生基本信号的编程方法,为后续实验打下了基础。

(2)产生一条-2到2之间的Sa(200t)曲线。

%产生一条-2到2之间的Sa(200t)曲线.sinc.m

t=[-2:0.01:2];

x=sinc(200*t/pi);

plot(t,x)

title('x=Sa(200t)')

(3)产生下面信号,并绘出频谱

t 0s(t)= -t+ t0/4 t0/4t-t0 3t0/4(假设t0=0.5s)

%st.m

t0=0.5;

ts=0.001;  %时间采样间隔

Fs=1/ts;   %采样频率

df=0.3;    %频率分辨率

t=0:ts:t0;

for i=1:length(t)

if t(i)>=0&t(i)    y(i)=t(i);

elseif t(i)>=t0/4&t(i)<=3*t0/4

    y(i)=-t(i)+t0/4;

elseif t(i)>3*t0/4&t(i)<=t0

    y(i)=t(i)-t0;

else continue

end

end

[Y,y,df1]=fft_seq(y,ts,df);

f=[0:df1:df1*(length(y)-1)]-Fs/2;

%频率矢量

subplot(2,1,1);plot(t,y(1:length(t)))

title('St信号');

subplot(2,1,2);plot(f,abs(fftshift(Y)));

title('St信号频谱');

% DSB调制,DSB.m

%调制信号时域表达式u(t)=m(t)c(t)=Ac*m(t)cos(2πfct)

%函数[M,m,df]=fft_seq(m,ts,df)求取频谱函数

%高斯噪声可表示成x=sqrt(Bs*no)*randn(1,M) 

Bs=10;     %高斯噪声限带

no=0.01;   %单边带功率谱密度

t0=1;      %信号持续时间

ts=0.001;  %时间采样间隔

Fc=250;    %载波中心频率

Fs=1/ts;   %采样频率

df=0.3;    %频率分辨率

t=[0:ts:t0];  %时间矢量

m=sin(2*pi.*t);     %调制信号

c=cos(2*pi*Fc.*t);  %载波信号

u=m.*c;             %已调信号

[M,m,df1]=fft_seq(m,ts,df);

M=M/Fs;     %缩放

[U,u,df1]=fft_seq(u,ts,df);U=U/Fs;

[C,c,df1]=fft_seq(c,ts,df);

f=[0:df1:df1*(length(m)-1)]-Fs/2;  

figure(1);

subplot(3,2,1);plot(t,m(1:length(t)));

axis([0 1 -1 1]);title('调制信号');

subplot(3,2,3);plot(t,c(1:length(t)))

axis([0 0.1 -1 1]);title('载波信号');

subplot(3,2,5);plot(t,u(1:length(t)));

axis([0 1 -1 1]);title('已调信号');

subplot(3,2,2);plot(f,abs(fftshift(M)));

title('调制信号频谱');

subplot(3,2,4);plot(f,abs(fftshift(C)));

title('载波信号频谱');

subplot(3,2,6);plot(f,abs(fftshift(U)));

title('已调信号频谱');

%相干解调,加入高斯白噪声noise

noise=sqrt(Bs*no)*randn(1,length(u);

[Y,y,df1]=fft_seq(y,ts,df); 

Y=Y/Fs;  y=(u+noise).*c;

%低通滤波

f_cutoff=150;  %滤波器截止频率

n_cutoff=floor(150/df1); 

f=[0:df1:df1*(length(m)-1)]-Fs/2;  

H=zeros(size(f));  H(1:n_cutoff)=2*ones(1,n_cutoff);

H(length(f)-n_cutoff+1:

length(f))=2*ones(1,n_cutoff);

DEM=H.*Y;  %滤波器输出频谱

dem=real(ifft(DEM))*Fs; 

figure(2);

subplot(2,2,1);plot(t,y(1:length(t)));

title('滤波器输入信号');

subplot(2,2,2);plot(f,abs(fftshift(Y)));

title('滤波器输入信号频谱');

subplot(2,2,3);plot(t,dem(1:length(t));

title('滤波器输出信号');

subplot(2,2,4);  plot(f,abs(fftshift(DEM)));

title('滤波器输出信号频谱');

%AM调制,AM.m

%AM调制信号的时域表达式为:

u(t)= AC[1+amn(t)]cos(2πfct)

% a是调制指数,mn(t)是经过归一%化处理的消息信号,函数%[M,m,df]=fft_seq(m,ts,df)求取频谱%函数,高斯噪声可表示成 

Bs=10;     %高斯噪声限带

no=0.01;   %单边带功率谱密度

a=0.8;     %调制指数

t0=1;      %信号持续时间

ts=0.001;  %时间采样间隔

Fc=250;    %载波中心频率

Fs=1/ts;   %采样频率

df=0.3;    %频率分辨率

t=[0:ts:t0];  %时间矢量

m=sin(2*pi.*t);   %调制信号

c=cos(2*pi*Fc.*t);  %载波信号

u=(1+a*m).*c;      %已调信号

[M,m,df1]=fft_seq(m,ts,df);

[U,u,df1]=fft_seq(u,ts,df);

[C,c,df1]=fft_seq(c,ts,df);

f=[0:df1:df1*(length(m)-1)]-Fs/2;  

figure(1);

subplot(3,2,1);plot(t,m(1:length(t)));

axis([0 1 -1 1])  title('调制信号');

subplot(3,2,3);plot(t,c(1:length(t)))

axis([0 0.1 -1 1])  title('载波信号');

subplot(3,2,5);plot(t,u(1:length(t)));

axis([0 1 -2 2])  title('已调信号');

subplot(3,2,2);plot(f,abs(fftshift(M)));

axis([-10 10 0 1]) 

title('调制信号频谱');

subplot(3,2,4);plot(f,abs(fftshift(C)));

axis([-300 300 0 200])

title('载波信号频谱');

subplot(3,2,6);plot(f,abs(fftshift(U)));

axis([-300 300 0 1]);

title('已调信号频谱');

%相干解调,加入高斯白噪声noise

noise=sqrt(Bs*no)*randn(1,length(u);

y=(u+noise).*c;

[Y,y,df1]=fft_seq(y,ts,df);  Y=Y/Fs;

%低通滤波

f_cutoff=150;  n_cutoff=floor(150/df1);  

H=zeros(size(f)); H(1:n_cutoff)=2*ones(1,n_cutoff);

H(length(f)-n_cutoff+1:length(f))=2*ones(1,n_cutoff);

DEM=H.*Y;    %滤波器输出频谱

dem=real(ifft(DEM))*Fs;  %滤波器的输出

figure(2);

subplot(2,2,1);plot(t,y(1:length(t)));

axis([0 1 -4 4]); title('滤波器输入信号');

subplot(2,2,2);plot(f,abs(fftshift(Y)));

axis([0 10 0 0.5]); title('滤波器输入信号频谱');

subplot(2,2,3);plot(t,dem(1:length(t));

axis([0 1 -1 4]); title('滤波器输出信号');

subplot(2,2,4); plot(f,abs(fftshift(DEM)));

axis([-10 10 0 1]);title('滤波器输出信号频谱');

心得体会:

通过AM与DSB实验,我对模拟调制解调的方法及原理有了清晰直观的认识,知道了各类调制解调方法的优缺点和相互之间的区别。

3、数字基带信号的码型的仿真

(1)单极性非归零码

function y=djxbg0(x)

%本函数实现将输入的一段二进制%代码编为相应的单极性不归零码%输出,编码规则:零电平与正电

%平分别对应着二进制代码0和1

%输入x为二进制码,输出y为编

%好的码,给出计算每一个码元的

%点数,因为我们只有用离散的点

%来得出连续的函数表示。在命令

%窗口键入如下指令即会出现图形

% t=[1 0 0 1 1 0 0 0 0 1 0 1];

% djxbg0(t);

ts=0.001;  %时间采样间隔

grid=1/ts; 

t=0:ts:length(x);

for i=1:length(x),  %计算码元的值

    if(x(i)==1),  %如果信息为1

        for j=1:grid,  

%该码元对应的点值取1

            y((i-1)*grid+j)=1;

        end

    else

        for j=1:grid,  

%反之,信息为0,码元对应点取0

            y((i-1)*grid+j)=0;

        end

    end

end

y=[y,x(i)];          

%为了画图注意序列加上最后一位

subplot(2,1,1);plot(t,y);

axis([0,i,-0.1,1.1]);

%采用了title命令来实现标记出各码元对应的二元信息

title('1 0 0 1 1 0 0 0 0 1 0 1');

xlabel('单极性不归零码');

 

(2)双极性归零码,占空比50%

function y=sjxg0(x)

%本函数实现将输入的一段二进制代码编为相应的双极性归零码输出

%编码规则:负电平与正电平分别对应着二进制代码0和1,每个码元内的脉冲都回到零电平

%输入x为二进制码,输出y为编好的码

%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示。

%在命令窗口键入如下指令即会出现图形

% t=[1 0 0 1 1 0 0 0 0 1 0 1];

% sjxg0(t);

grid=300;

t=0:1/grid:length(x);

for i=1:length(x),      %计算码元的值

    if(x(i)==1),        %如果信息为1

        for j=1:grid/2, %该码元对应的点值取1

            y((i-1)*grid+j)=1;

        end

        for j=grid/2:grid,%占空比50%,归0

            y((i-1)*grid+j)=0;

        end

    else

        for j=1:grid/2,%反之,信息为0,码元对应点取-1

            y((i-1)*grid+j)=-1;

        end

        for j=grid/2:grid,%占空比50%,归0

            y((i-1)*grid+j)=0;

        end

    end

end

y=[y,x(i)];%为了画图,注意将序列加上最后一位

M=max(y);m=min(y);

subplot(2,1,1);plot(t,y);

xlabel('双极性归零码')axis([0,i,m-0.1,M+0.1])

%采用了title命令来实现标记出各码元对应的二元信息

title('1   0   0   1  1   0   0   0   0   1   0  1');

(3)双相码

function [y,t]=shuangxiang(x)

%本函数实现将输入的一段二进制代码编为相应的双向

%码输出,编码规则:“0”码用“01”表示,“1”码用“10”%表示,输入x为二进制码,输出y为编好的码,给出计%算,每一个码元的点数,因为我们只有用离散的点来得出%连续的函数表示。

%在命令窗口键入如下指令即会出现图形

% t=[1 0 0 1 1 0 0 0 0 1 0 1];

% shuangxiang(t);

ts=0.001;  %时间采样间隔

grid=1/ts; 

t=0:ts:length(x);

for i=1:length(x),     %计算码元的值

    if(x(i)==1),  %如果信息为1,该码元对应的点值取10

        for j=1:grid/2,  

            y((i-1)*grid+j)=1;

        end

        for j=grid/2:grid,  

            y((i-1)*grid+j)=0;

        end

else               

%如果信息为0,该码元对应的点值取01

        for j=1:grid/2,  

            y((i-1)*grid+j)=0;

        end

        for j=grid/2:grid, 

            y((i-1)*grid+j)=1;

        end

    end

end

y=[y,x(i)];          

%为了画图,注意将序列加上最后一位

subplot(2,1,1);

plot(t,y);

axis([0,i,-0.1,1.1]);

%采用了title命令来实现标记出各码元对应的二元信息

xlabel('双向码');

title('1 0 0 1 1 0 0 0 0 1 0 1');

(4)AMI码

function y=ami(x)

%本函数实现将输入的一段二进制代码编为相应的AMI码输出

%编码规则:二进制“1”交替变换为“+1”,“-1”,“0”保持不变

%输入x为二进制码,输出y为编好的码

%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示

%在命令窗口键入如下指令即会出现图形

% t=[1 0 0 1 1 0 0 0 0 1 0 1];

% ami(t);

grid=300;

s=0;                 %s为符号标志

t=0:1/grid:length(x);

for i=1:length(x),   %计算码元的值

    if(x(i)==1),     %如果信息为1

        if(s==0),    

        for j=1:grid,      %s=0时,该码元对应的点值取1

            y((i-1)*grid+j)=1;

            s=1;

        end

        else

            for j=1:grid,  %s=1时,该码元对应的点值取-1

            y((i-1)*grid+j)=-1;

            s=0;

            end

        end

    else

        for j=1:grid,      %反之,信息为0,码元对应点取0

            y((i-1)*grid+j)=0;

        end

    end

end

y=[y,x(i)];%为了画图,注意将序列加上最后一位

subplot(2,1,1);

plot(t,y);

axis([0 i -1.1 1.1])

xlabel('AMI码');

%采用了title命令来实现标记出各码元对应的二元信息

title('1 0 0 1 1 0 0 0 0 1 0 1');

(3)a=0,0.5,1的升余弦滚降系统频谱及其各自对应的时域波形

%gunjiang.m

%取a=0,0.5,1的升余弦滚降系统频谱及各自对应的时域波形

%函数[Y,y]=H(f,a,1T)为升余弦滚降系统频谱及各自对应的时域表达式

N=400;

for i=1:N

    f(i)=(i-N)/100;                        %采样间隔

    [Y1(i),y1(i)]=Hh(f(i),0,1);            %a=0

    [Y2(i),y2(i)]=Hh(f(i),0.5,1);          %a=0.5

    [Y3(i),y3(i)]=Hh(f(i),1,1);            %a=1

End

for i=(N+1):(2*N-1)

   f(i)=(i-N)/100;

   [Y1(i),y1(i)]=Hh(f(i),0,1);  %a=0

   [Y2(i),y2(i)]=Hh(f(i),0.5,1);%a=0.5

   [Y3(i),y3(i)]=Hh(f(i),1,1);  %a=1

end

figure(1); plot(f,Y1);   hold on

plot(f,Y2,'r');  hold on

plot(f,Y3,'k');

legend('a=0','a=0.5','a=1')

title('升余弦滚降频谱');

axis([-2 2 0 2]);

figure(2);

plot(f,y1);    hold on

plot(f,y2,'r');  hold on

plot(f,y3,'k');

title('升余弦滚降时域波形');

legend('a=0','a=0.5','a=1')

axis([-4 4 -1 1]);

%Hh.m

%函数[Y,y]=H(f,a,1T)为升余弦滚降系统频谱及各自对应的时域表达式

%f为采样间隔,a为滚降系数,Ts为码元持续时间

function [H,h]=Hh(f,a,Ts)

%升余弦滚降系统频谱函数H

if abs(f)>=(1+a)/(2*Ts)

    H=0;

elseif abs(f)<(1-a)/(2*Ts)

    H=Ts;

else

H=(Ts/2)*(1+sin((pi-abs(f)*2*pi*Ts)/(2*a)));

end

%升余弦滚降系统时域表达式h

h=sinc(f/Ts).*(cos(a*pi*f/Ts))./(1-4*a^2*f.^2/Ts^2);

(4)基带传输系统响应是a=1的升余弦滚降系统在接收端的基带数字信号波形及其眼图。

%基带信号眼图示意,yantu.m.。函数%out=sigexpand()将输入的序列扩展

%成间隔为N-1个0的序列

Ts=1;        %持续时间

N_sample=17;

eye_num=7;

alpha=1;

N_data=1000;

dt=Ts/N_sample;

t=-3*Ts:dt:3*Ts;       %时间矢量

%产生双极性数字信号

d=sign(randn(1,N_data));

dd=sigexpand(d,N_sample);    %系统输入信号

%基带系统冲击响应(升余弦)

ht=sinc(t/Ts).*(cos(alpha*pi*t/Ts))./(1-4*alpha^2*t.^2/Ts^2);

st=conv(dd,ht);              %系统输出信号

tt=-3*Ts:dt:(N_data+3)*N_sample*dt-dt;   %时间矢量tt

figure(1)

subplot(411);plot(dd);

axis([0 100 -2 2]);title('双极性数字信号');

subplot(412)

plot(t,ht);xlabel('t/Ts');title('系统函数波形(a=1)');

subplot(413)

plot(tt,st);axis([0 20 -1.2 1.2]);xlabel('tt/Ts');title('基带信号');

subplot(414); xlabel('ttt/Ts');title('基带信号眼图');

%画眼图

ss=zeros(1,eye_num*N_sample);

ttt=0:dt:eye_num*N_sample*dt-dt;

for k=3:50

    ss=st(k*N_sample+1:(k+eye_num)*N_sample);

    drawnow;

    plot(ttt,ss);hold on;

end

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、数字调制与解调的仿真

(1) 2FSK调制和解调

%2FSK调制, FSKnoise.m

df=0.3;    %频率分辨率

ts=0.0005;  %时间采样间隔

Fs=1/ts;   %采样频率

x=[1 0 0 1 1 0 1 0 0 1 0 1];

n=length(x);

[s1,t]=djxbg0(x);

%基带信号为单极性不归零码

s2=1-s1;

%单极性不归零码的反码

c1=sin(2*pi*20.*t);

%载波信号c1,f=20hz

c2=sin(2*pi*120.*t);

%载波信号c2,f=120hz

ei1=c1.*s1;

%已调信号ei1

ei2=c2.*s2;            

%已调信号ei2

e=ei1+ei2;             

%2FSK信号

noise=0.1*randn(1,length(t));  

%加入噪声

e=e+noise;             

figure(1);

subplot(3,2,1);

plot(t,s1);axis([0,n,-0.1,1.1]); ylabel('基带信号s1');

title('1 0 0 1 1 0 1 0 0 1 0 1');

subplot(3,2,2); plot(t,s2);axis([0,n,-0.1,1.1]); ylabel('基带信号反码s2');

title('1 0 0 1 1 0 1 0 0 1 0 1');

subplot(3,2,3);plot(t,c1); axis([0,1,-1,1]);title('载波信号c1');

subplot(3,2,4);plot(t,c2); axis([0,1,-1,1]);title('载波信号c2');

subplot(3,2,5);plot(t,ei1);

axis([0,n,-1,1]);title('已调信号ei1');

subplot(3,2,6);plot(t,ei2);

%相干解调

b1=fir1(101,[10/800 20/800]);

b2=fir1(101,[90/800110/800]);

eo1=filter(b1,1,e);

eo2=filter(b2,1,e);

%经过带通滤波器后的信号

[E,e,df1]=fft_seq(e,ts,df);

[E1,eo1,df1]=fft_seq(eo1,ts,df);

[E2,eo2,df1]=fft_seq(eo2,ts,df);

f=[0:df1:df1*(length(e)-1)]-Fs/2;  

figure(2);

subplot(321); plot(t,e(1:length(t))); 

title('2FSK信号e');

subplot(322); plot(f,abs(fftshift(E)));

axis([-200 200 0 10000]);

title('2FSK信号频谱E');

subplot(3,2,3);plot(t,eo1(1:length(t)));

title('滤波器输出信号eo1(f=20hz)');

subplot(3,2,4);plot(f,abs(fftshift(E1)));

axis([-200 200 0 10000]);

title('带通滤波器输出信号频谱E1');

subplot(3,2,5);plot(t,eo2(1:length(t)));

title('滤波器输出信号eo2(f=120hz)');

subplot(3,2,6);plot(f,abs(fftshift(E2)));

axis([-200 200 0 10000]);

title('带通滤波器输出信号频谱E2');

sw1=eo1.*eo1;

sw2=eo2.*eo2;

bn=fir1(101,[2/80010/800]); st1=filter(bn,1,sw1);

st2=filter(bn,1,sw2);

figure(3)

subplot(311); plot(t,st1(1:length(t)));

ylabel('幅度');xlabel('t')

title('经过低通滤波器后的波形st1')

subplot(312);plot(t,st2(1:length(t)));

title('经过低通滤波器后的波形st2');

ylabel('幅度');xlabel('t')

%判决

for i=1:length(t)

if(st2(i)>=st1(i))

        st(i)=0;

    else st(i)=1;

    end

end

subplot(313);

plot(t,st(1:length(t)));

title('经过抽样判决器后的波形st');ylabel('幅度');xlabel('t')

(1) 2PSK调制和解调

%2PSK调制,PSKnoise.m

ts=0.001;

Fs=1/ts;

df=0.1;

x=[1 0 0 1 1 0 1 0 0 1 0 1];

i=length(x);

[s1,t]=djxbg0(x);

s2=1-s1;

c1=sin(2*pi*10.*t); 

%载波信号c1,初相位位0

c2=sin(2*pi*10.*t-pi);   

%载波信号c2,初相位位180

e1=c1.*s1;          %已调信号e1

e2=c2.*s2;          %已调信号e2

ei=e1+e2;           %2PSK信号

noise=0.1*randn(1,length(t));  %噪声

ei=ei+noise;

figure(1);

subplot(3,2,1); plot(t,s1);axis([0,i,-0.1,1.1]);

title('1 0 0 1 1 0 1 0 0 1 0 1');

ylabel('基带信号s1')

subplot(3,2,2); plot(t,s2);axis([0,i,-0.1,1.1]);

title('1 0 0 1 1 0 1 0 0 1 0 1');

ylabel('基带信号反码s2');

subplot(3,2,3); 

plot(t,c1); axis([0,1,-1,1]);

title('载波信号c1(初相位位0)');

subplot(3,2,4); 

plot(t,c2); axis([0,1,-1,1]);

title('载波信号c2(初相位位180)');

subplot(3,2,5); 

plot(t,e1); axis([0,i,-1,1]);

title('已调信号e1');

subplot(3,2,6); 

plot(t,e2); axis([0,i,-1,1]);

title('已调信号e2');

%相干解调

eo=ei.*sin(2*pi*10.*t);  

 %已调信号eo与本振相乘

[EI,ei,df1]=fft_seq(ei,ts,df);

[E,eo,df1]=fft_seq(eo,ts,df);

%低通滤波

f_cutoff=1;  %滤波器截止频率1hz

n_cutoff=floor(1/df1);  %设计滤波器

f=[0:df1:df1*(length(eo)-1)]-Fs/2;  

%频率矢量

H=zeros(size(f));  

H(1:n_cutoff)=ones(1,n_cutoff);

H(length(f)-n_cutoff+1:

length(f))=ones(1,n_cutoff);

DEM=H.*E;  %滤波器输出频谱

dem=real(ifft(DEM)); %滤波器的输出

figure(2);

subplot(3,2,1); 

plot(t,eo(1:length(t)));

axis([0,i,-2,2]);

title('滤波器输入信号eo');

subplot(3,2,2);

plot(f,abs(fftshift(E)));

axis([0 i -1 1000])

title('滤波器输入信号频谱E');

subplot(3,2,3);

plot(t,dem(1:length(t)));

axis([0,i,-2,2]);

title('滤波器输出信号dem');

subplot(3,2,4);

plot(f,abs(fftshift(DEM)));

axis([-2,2,0,2000]);

title('滤波器输出信号频谱DEM');

%抽样判决

for n=1:length(f)

if(dem(n)>0)

        dem(n)=1;

    else

        dem(n)=0;

    end

end

subplot(3,2,5); 

plot(t,dem(1:length(t)));

axis([0,i,-0.1,1.1]);

title('恢复信号dem');

DEM=real(ifft(dem));

subplot(3,2,6); plot(f,abs(fftshift(DEM)));

axis([0,2,-0.1,0.5]);

title('恢复信号频谱DEM');

figure(3);

subplot(2,1,1); 

plot(t,ei(1:length(t)));

axis([0,5,-1,1]);

title('2PSK信号');

subplot(2,1,2); 

plot(f,abs(fftshift(EI)));

axis([-10,10 0.1,2000]);

title('2PSK信号频谱');

心得体会

通过2FSK与2PSK实验,我对数字调制解调的实现方法及原理有了清晰直观的认识,知道了各类调制解调方法的优缺点和相互之间的区别。

总结

通过信号与通信仿真实验,我对通信技术中的一些知识和原理有了更深的认识,对通信系统的总体把握更加全面和准确,为今后的深入学习扎实了基础。在此感谢狄卫国老师的悉心指导。

文档

信号与通信仿真实验报告

现代通信原理与技术信号与通信仿真设计实习报告姓名:班级:学号:一实验目的在本实验中使用的软件工具是MATLAB。设计本实验的目的是希望在以下几方面有所收获:1.会MATLAB软件的最基本运用。MATLAB是一种很实用的数学软件,它易学易用。MATLAB对于许多的通信仿真类问题来说是比较合适的。2.了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。3.加深对信号与系统和通信原理及其相关课程内容的理解。二实验特点与硬件实验相比,软件实验具如下一些特点:1.软件实验具有广泛的实用
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top