通信原理MATLAB仿真.doc
《通信原理MATLAB仿真.doc》由会员分享,可在线阅读,更多相关《通信原理MATLAB仿真.doc(19页珍藏版)》请在冰点文库上搜索。
通信原理——基于Matlab的计算机仿真报告
小学期报告
实习题目通信原理Matlab仿真
专业 通信与信息工程
班级
学 号
学生姓名
实习成绩
指导教师
2010年
通信原理Matlab仿真
目录
一、实验目的------------------------------------------------------------------------------------------------2
二、实验题目------------------------------------------------------------------------------------------------2
三、正弦信号波形及频谱仿真------------------------------------------------------------------------2
(一)通信原理知识--------------------------------------------------------------------------------------2
(二)仿真原理及思路--------------------------------------------------------------------------------------2
(三)程序流程图-------------------------------------------------------------------------------------------3
(四)仿真程序及运行结果------------------------------------------------------------------------------3
(五)实验结果分析---------------------------------------------------------------------------------------5
四、单极性归零波形及其功率谱密度仿真--------------------------------------------------------5
(一)通信原理知识--------------------------------------------------------------------------------------6
(二)仿真原理及思路-------------------------------------------------------------------------------------6
(三)程序流程图-------------------------------------------------------------------------------------------6
(四)仿真程序及运行结果--------------------------------------------------------------------------------6
(五)实验结果分析---------------------------------------------------------------------------------------6
五、升余弦滚降波形的眼图及功率谱密度仿真-------------------------------------------------8
(一)通信原理知识--------------------------------------------------------------------------------------8
(二)仿真原理及思路-------------------------------------------------------------------------------------9
(三)程序流程图------------------------------------------------------------------------------------------9
(四)仿真程序及运行结果------------------------------------------------------------------------------10
(五)实验结果分析---------------------------------------------------------------------------------------11
六、PCM编码及解码仿真-----------------------------------------------------------------------------12
(一)通信原理知识-------------------------------------------------------------------------------------12
(二)仿真原理及思路------------------------------------------------------------------------------------13
(三)程序流程图------------------------------------------------------------------------------------------14
(四)仿真程序及运行结果------------------------------------------------------------------------------15
(五)实验结果分析---------------------------------------------------------------------------------------18
七、实验心得-----------------------------------------------------------------------------------------------18
一、实验目的
1、学会MATLAB软件的最基本运用。
MATLAB是一种很实用的数学软件,它易学易用。
MATLAB对于许多的通信仿真类问题来说是很合适的。
2、了解计算机仿真的基本原理及方法,知道怎样通过仿真的方法去研究通信问题。
3、加深对通信原理课有关内容的理解。
二.实验要求
1.正弦信号波形及频谱的仿真;
2.单极性归零(RZ)波形及其功率谱,占空比为50%的仿真;
3.升余弦滚降波形的眼图及其功率谱的仿真。
滚降系数为0.5。
发送码取值为0、2;
4.PCM编码及解码的仿真。
三.正弦信号波形及频谱仿真
(一)通信原理知识
(二)仿真原理及思路
MATLAB中关于傅里叶变换的有关函数,利用MATLAB提供的函数编写两个函数t2f及f2t。
t2f的功能是作傅氏变换,f2t的功能是作傅氏反变换,它们的引用格式分别为X=t2f(x)及x=f2t(X),其中x是时域信号截短并采样所得的取样值矢量,X是对的傅氏变换截短并采样所得的取样值矢量。
(三)程序流程图
正弦信号
傅里叶变换
傅里叶逆变换
作图
耳机插孔
PROBE
EZ_PROBE座
(四)仿真程序及运行结果
主程序:
sinx.m
globaldtdfNtfT%全局变量
closeall
k=input('取样点数=2^k,k=[10]');
ifk==[],k=10;end
N=2^k;%采样点数
dt=0.01;%时域采样间隔
df=1/(N*dt);%频域采样间隔
T=N*dt;%截短时间
Bs=N*df/2;%系统带宽
t=linspace(-T/2,T/2,N);
f=linspace(-Bs,Bs,N);
f0=1;
s=cos(2/3*pi*f0*t);
S=t2f(s);
a=f2t(S);
figure
(1)
set(1,'position',[10,50,500,200])%设定窗口位置及大小
figure
(2)
set(2,'position',[350,50,500,200]);%设定窗口位置及大小
figure
(1)
as=abs(S);%求模
plot(f,as,'r-')
grid;
axis([-2*f0,+2*f0,min(as),max(as)]);
xlabel('f(kHZ)');
ylabel('S(f)(V/kHZ)');
figure
(2)
plot(t,a,'b-')
grid
axis([-4,+4,-1.5,1.5']);
xlabel(('t(ms)'));
ylabel('s(t)(V)');
傅式变换程序:
t2f.m
functionX=t2f(x)
globaldtdfNtfT
%X=t2f(x)
%x为时域的取样值矢量
%X为x的傅氏变换
%X与x长度相同,并为2的整幂。
%本函数需要一个全局变量dt(时域取样间隔)
H=fft(x);
X=[H(N/2+1:
N),H(1:
N/2)].*dt;
End
傅式反变换程序:
f2t.m
functionx=f2t(X)
globaldtdftfTN
%x=f2t(X)
%x为时域的取样值矢量
%X为x的傅氏变换
%X与x长度相同并为2的整幂
%本函数需要一个全局变量dt(时域取样间隔)
X=[X(N/2+1:
N),X(1:
N/2)];
x=ifft(X)/dt;
%x=[tmp(N/2+1:
N),tmp(1:
N/2)];
End
运行结果:
(五)实验结果分析
打开MATLAB运行程序sinx.m后窗口出现:
取样点数=2^k,k=[10]。
输入10后,画出正弦信号波形图以及频谱图。
通过傅里叶变换语句S=t2f(s)及傅里叶反变换语句a=f2t(S),得到正弦信号频谱并作图。
四.单极性归零(RZ)波形及其功率谱仿真
(一)通信原理知识
用矩形不归零脉冲作为发射波形(载波):
0
2PAM信号波形的幅度:
占空比:
(二)仿真原理及思路
采用归零(RZ)矩形脉冲波形的数字信号,可以用简单的方法信号矢量s。
设a是码元矢量,N是总取样点数,M是总码元数,L是每个码元内的点数,Rt是要求的占空比,dt是仿真系统的时域采样间隔,则RZ信号的产生方法是
s=zeros(1,N);
forii=1:
Rt/dt,s(ii+[0:
M-1]*L)=a;,end
任意信号的功率谱的定义是,其中是截短后的傅氏变换,是的能量谱,是在截短时间内的功率谱。
对于仿真系统,若x是时域取样值矢量,X是对应的傅氏变换,那么x的功率谱便为矢量P=(X.*conj(X))/T。
(三)程序流程图
产生M个取值0,1等概的随机码
产生占空比为0.5的单极性归波形
单极性归零码的功率谱密度
作图
(四)仿真程序及运行结果
程序如下:
rz.m
globaldttdfN
closeall
k=input('取样点数=2^k,k=[14]');
ifk==[],k=14;
end
N=2^k; %采样点数
L=64; %每码元的采样点数
M=N/L; %码元数
Rb=2; %码速率为2Mb/s
Ts=1/Rb; %码元间隔
dt=Ts/L; %时域采样间隔
Rt=0.5; %占空比
df=1/(N*dt); %频域采样间隔
T=N*dt; %截短时间
t=linspace(-T/2,T/2,N); %时域横坐标
Bs=N*df/2; %系统带宽
f=linspace(-Bs,Bs,N); %频域横坐标
EP=zeros(1,N);
forjj=1:
100
a=round(rand(1,M));%产生M个取值0,1等概的随机码
s=zeros(1,N); %产生一个N个元素的零序列
forii=1:
Rt*Ts/dt
s(ii+[0:
M-1]*L)=a; %产生单极性归零码
end
Q=t2f(s); %付氏变换
P=Q.*conj(Q)/T; %P为单极性归零码的功率
EP=(EP*(ii-1)+P)/ii;%累计平均
aa=30+10*log10(EP+eps); %加eps以避免除以零,标量eps相当于无穷小。
end
figure
(1)
set(1,'position',[10,50,500,200])%设定窗口位置及大小
figure
(2)
set(2,'position',[350,50,500,200])%设定窗口位置及大小
figure
(1)
plot(f,aa,'r')
xlabel('f(MHZ)')
ylabel('Ps(f)(MHZ)')
axis([-15,+15,-50,50])
grid
figure
(2)
plot(t,s,'b')
xlabel('t(ms)')
ylabel('s(t)(V)')
axis([-10,10,-0.5,1.5])
grid
运行结果:
(五)实验结果分析
打开MATLAB运行程序rz.m后窗口出现:
取样点数=2^k,k=[14]。
输入14后,画出占空比为50%的单极性归零(RZ)码的波形图及其功率谱图。
本题通过rand(1,M)函数产生M个取值0,1等概的随机码,然后根据0.5占空比,生成单极性归零码。
最后对其傅里叶变换,用语句P=Q.*conj(Q)/T生成单极性归零码的功率。
五.升余弦滚降波形的眼图及功率谱密度仿真
(一)通信原理知识
接收二进制波形时,在一个码元周期Ts内只能看到一只眼睛;若接收的是M进制波形,则在一个码元周期内可以看到纵向显示的(M-1)只眼睛;另外,若扫描周期为nTs时,可以看到并排的n只眼睛。
(二)仿真原理及思路
升余弦滚降信号的基本脉冲波形为:
。
用和产生升余弦滚降信号。
通过运行此程序,我们可以观察到不同滚降系数时升余弦滚降信号的眼图及功率谱。
在通信原理的模型中,加入到升余弦滚降滤波器输入端的信号是冲激序列,而实际当中原始的数字信号一般是NRZ(不归零)信号,为了使升余弦滚降滤波器的输出仍为我们期望得到的信号,此时需要在滚降滤波器之前加入一个网孔均衡滤波器(如下图所示)
眼图是数字信号在示波器上重复扫描得到的显示图形。
若示波器的扫描范围是Na个码元,那么画眼图的方法是:
tt=[0:
dt:
Na*L*dt];
holdon
forii=1:
Na*L:
N-N*L
plot(tt,s(ii+[1:
Na*L]));
end
(三)程序流程图
滚将系数为0.5的升余弦脉冲波形
升余弦信号的功率谱
作图
升余弦信号的眼图
(四)仿真程序及运行结果
程序如下:
scosx.m
globaldttdfN
closeall
N=2^14; %采样点数
L=32; %每码元的采样点数
M=N/L %码元数
Rb=2; %码速率是2Mb/s
Ts=1/Rb;%码元间隔
dt=Ts/L;%时域采样间隔
df=1/(N*dt)%频域采样间隔
T=N*dt%截短时间
Bs=N*df/2%系统带宽
Na=4;%示波器扫描宽度为4个码元
alpha=input('滚降系数=[0.5]');
ifalpha==[],alpha=0.5;
end
t=[-T/2+dt/2:
dt:
T/2];%时域横坐标
f=[-Bs+df/2:
df:
Bs];%频域横坐标
g1=sin(pi*t/Ts)./(pi*t/Ts);
g2=cos(alpha*pi*t/Ts)./(1-(2*alpha*t/Ts).^2);
g=g1.*g2*2; %升余弦脉冲波形
G=t2f(g);
figure
(1)
set(1,'position',[10,50,500,200])%设定窗口位置及大小
figure
(2)
set(2,'position',[350,50,500,200])%设定窗口位置及大小
holdon
grid
xlabel('tinus')
ylabel('s(t)inV')
EP=zeros(size(f))+eps;
forii=1:
100
a=sign(randn(1,M));
imp=zeros(1,N);%产生冲激序列
imp(L/2:
L:
N)=a/dt;
S=t2f(imp).*G;%升余弦信号的傅氏变换
s=f2t(t2f(imp).*G);%升余弦信号的时域波形
s=real(s);P=S.*conj(S)/T;%升余弦信号的功率谱
EP=(EP*(ii-1)+P+eps)/ii;
figure
(1)
plot(f,30+10*log10(EP),'r');
grid
axis([-3,+3,-200,50])
xlabel('f(MHz)')
ylabel('Ps(f)(dBm/MHz)')
figure
(2)
tt=[0:
dt:
Na*L*dt];
forjj=1:
Na*L:
N-Na*L
plot(tt,s(jj:
jj+Na*L));
end
end
运行结果:
(五)实验结果分析
打开MATLAB运行程序scosx.m后窗口出现:
M=512,df=0.0039,T=256,Bs=32滚降系数=[0.5]。
输入0.5后,画出升余弦滚降系数为0.5的波形的眼图及其功率谱密度图。
升余弦滚降信号的基本脉冲波形为:
。
本题用和产生滚降系数为0.5的升余弦滚降信号。
然后对其进行傅里叶变换,得到功率谱密度与眼图。
六.PCM编码及解码仿真
(一)通信原理知识
PCM采用A律编码规则:
A律压扩特性曲线在(-1,+1)上,这种压扩特性可用13折线逼近。
注意:
本来是分成了16段,但0附近的4个线段斜率相同,可视为1条
对量化后的有限个取值进行编码,常见的二进制码:
自然码,折叠码,格雷码。
PCM中使用的是折叠码:
用第一位表示量化电平极性(正为1,负为0),后面几位表示信号量化电平绝对值的大小。
量化:
先用对数A律特性将量化范围分成16个段落(对数量化),在段落内则使用均匀量化(即将每个段落均匀分成16个小段)。
编码:
每个值用8比特进行量化。
将整个量化范围均分成8192等份,正负部分各4096份且相互对称。
下面以正极性部分进行说明:
段落0(000):
0-32份。
段内16小段,每小段2份
段落1(001):
32-64份。
段内16小段,每小段2份
段落2(010):
64-128份。
段内16小段,每小段4份
段落3(011):
128-256份。
段内16小段,每小段8份
段落4(100):
256-512份。
段内16小段,每小段16份
段落5(101):
512-1024份。
段内16小段,每小段32份
段落6(110):
1024-2048份。
段内16小段,每小段64份
段落7(111):
2048-4096份。
段内16小段,每小段128份
注意:
每小段的量化电平为该小段中点(均匀量化)
(二)仿真原理及思路
PCM编码原理:
在PCM中,对模拟信号进行抽样、量化,将量化的信号电平值转化为对应的二进制码组的过程称为编码,其逆过程称为译码或解码。
在PCM中使用的是折叠二进制码。
(1)折叠二进制码
从理论上看,任何一个可逆的二进制码组均可用于PCM。
目前最常见的二进制码组有三类:
二进制自然码(NBC)、折叠二进制码组(FBC)、格雷二进制码(RBC)。
表3-1列出三种码的编码规律。
表3-1二进制码型
电平序号
自然二进制码
折叠二进制码
格雷码
0
1
2
3
4
5
6
7
0000
0001
0010
0011
0100
0101
0110
0111
0111
0110
0101
0100
0011
0010
0001
0000
0000
0001
0011
0010
0110
0111
0101
0100
8
9
10
11
12
13
14
15
1000
1001
1010
1011
1100
1101
1110
1111
1000
1001
1010
1011
1100
1101
1110
1111
1100
1101
1111
1110
1010
1011
1001
1000
由表3-1可见,如果把16个量化级分成两部分:
0~7的8个量化级对于于负极性样值,8~15的8个量化级对应于正极性样值。
自然二进制码就是一般的十进制正整数的二进制表示。
如电平序号13用自然码表示就是
(3.3-3)
其中下标表示是二进制数。
在折叠码中,左边第一位表示正负号(信号极性),第二位开始至最后一位表示信号幅度。
第一位用1表示正,