无线实验指导书文档格式.docx
《无线实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《无线实验指导书文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
MATLAB进行数值计算的基本单位是复数数组,这使得MATLAB高度“向量化”。
经过近30年的完善和扩充,其现已发展成为线性代数的标准工具。
由于它不需定义数组的维数,并提供了矩阵函数、特殊矩阵等专门的库函数,使之在求解诸如信号处理等领域问题时,显得大为简捷,这是其它高级语言所不能比拟的。
MATLAB中包括了被称做工具箱(Toolbox)的各类应用问题的求解工具。
MATLAB7.0.1中包括了图形界面编辑GUI,改变了以前单一的“在指令窗口通过文本型的指令进行各种操作”的状况。
这可让使用者也可以像VB、VC等语言那样进行一般的可视化程序编辑。
在MATLAB指令窗口“CommandWindow”键入“simulink”就可以打开“simulink”窗口。
以往十分困难的系统仿真问题,在“simulink”窗口只需拖动鼠标即可轻而易举地解决。
良好的人机界面使MATLAB得到了使用者的青睐。
1.1.2MATLAB集成开发环境
MATLAB启动后如图1-1所示,光标处在命令窗口“CommandWindow”下。
图1-1MATLAB命令窗口
输入命令pwd,可以显示当前所处的目录。
输入cdd:
\ls,可以切换到D盘ls文件夹下。
如下图:
图1-2pwd和cd命令
MATLAB共有File、Edit、Debug、Desktop、Window、Help等6个选单,每个主要功能之下又有下一层的功能。
对于初学者,可以在命令窗口键入“demo”,在出现的“Help”窗口中会有使用MATLAB进行仿真的流程,方便初学者学习。
如有不熟悉的函数,可在“CommandWindow”窗口键入“Help+函数名”查询函数的具体用法。
例如,要了解sin命令的意义与用法,可键入
Helpsin
其执行结果如下:
SINSine.
SIN(X)isthesineoftheelementofX.
Overloadedmethods
helpsym/sin.m
在MATLAB下进行基本数学运算时,只需直接在提示号(>
>
)之后输入运算式,并按“Enter”键即可。
例如:
(10*19+2/4-34)/2*3
ans=
234.7500
MATLAB的结果直接存入一变数ans,并将其显示在屏幕上,若在所输入的结尾加上“;
”则计算结果不会显示;
要想得知计算值,只须键入该变数名ans即可。
MATLAB使用中括号来建立一个行向量[1352],将其储存在变量s中。
如>
s=[1352];
。
若要一次执行大量的MATLAB语句,可将这些语句存放到一个扩展名为m的文件中,并在MATLAB命令提示号下输入此文件的主文件名即可。
这种包含MATLAB语句的文件都以m为扩展名,因此通称M文件。
例如一个名为test.m的M文件,包含许多的MATLAB语句,那么只要直接输入test,即可执行其所包含的语句。
MATLAB语句区分字母大小写。
MATLAB利用“↑”“↓”两个游标键将所操作过的指令“唤醒”,使之被重复使用。
按下“↑”键,则前一次指令重复出现,之后再按“Enter”键,即可执行该指令。
而“↓”键的功用则是往后执行指令。
当要在MATLAB中执行操作系统(例如DOS)的指令时,可以利用“!
”再加上原操作系统的指令,例如!
dir,!
formata:
“Ctrl+C”(即同时按“Ctrl”及“C”两个键)可以终止执行中的MATLAB工作。
有下述三种方法可以结束MATLAB:
●Exit
●Quit
●直接关闭MATLAB的指令窗口“CommandWindow”。
1.1.3MATLAB基本操作
1.变量及其命名规则与表达式
1)变量及其命名规则如下:
(1)MATLAB对变量名的大小写是敏感的。
(2)变量名的第一个字符必须为英文字母。
(3)预定义的变量如表1-1所示,这些变量名有特定的含义。
(4)键入“clear”,则是去除所有定义过的变量名称。
表1-1预定义的变量
变量名
含义
ans
预定的计算结果的变量名
pi
内建的π值
2)表达式
MATLAB书写表达式的规则与“手写算式”的基本类同。
如果一个指令过长,则可以在结尾加上…(代表此行指令与下一行连续),例如:
3*…
6
ans=
18
2.MATLAB系统命令
MATLAB系统命令如表1-2所示。
表1-2系统命令
命令
help
在线帮助
dir
显示目录内容
demo
运行演示程序
path
获取或设置搜索路径
pwd
显示当前的工作目录
cd
改变当前的工作目录
who
显示当前变量
load
把文件调入到变量工作间
whos
显示当前变量的详细信息
save
把变量存入文件中
clear
清空工作间的变量和函数
quit/exit
退出MATLAB
4.MATLAB语言中的关系与逻辑运算
在执行关系及逻辑运算时,MATLAB将输入的不为零的数值都视为真(True),而为零的数值则视为假(Flalse)。
运算的输出值将判断为真者以1表示,而判断为假者以0表示。
各个运算指令须用在两个维数相同的阵列或矩阵中。
1.1.4矩阵运算
MATLAB事实上是以阵列(Array)及矩阵方式在做运算的。
而这两种方式在MATLAB的基本运算中的性质有所不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。
当宣告一变数为阵列或是矩阵时,如果是要个别键入元素,须用中括号[]将元素置于其中。
阵列为一维元素所构成,而矩阵为多维元素所构成。
在MATLAB内部的数据结构中,每一个矩阵都是一个以行为主的阵列,因此对于矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。
1.1.6MATLAB控制语句
1.for循环语句
for循环语句用于以预定的次数重复执行一组命令。
for循环语句的一般形式为
for循环控制变量=存储着该变量依次所取值的向量;
运算式;
End
在for和end语句之间的运算式重复执行的次数由上方向量的长度决定;
每次执行,循环控制变量依次取该向量的值。
如fori=1:
h(i)=1/i;
end
以上程序表示共循环6次。
2.while循环语句
while循环语句根据表达式的结果来确定循环执行一组语句的次数。
while循环的一般形式为
while表达式
运算式;
只要表达式的结果为真,就执行while和end语句之间的运算式。
通常,表达式的求值结果是一个标准值,但数组值也同样有效。
在数组情况下,所得到数组的所有元素必须都为真。
就是说,只要表达式成立,运算式就会一直被执行。
可以利用break命令直接跳出while循环。
while循环可按需要嵌套。
为了得到最大速度,while循环被执行之前,应预先分配数组。
如
x=zeros(1,6);
%表示把1个1行6列的0矩阵赋值给向量x,则x
(1)=0,x
(2)=0……,x(6)=0
i=1;
whilei<
=6
x(i)=1/i;
i=i+1;
3.if-else-end分支语句
最简单的if-else-end结构为
if表达式
如果在表达式中的所有元素为真(为零),那么就执行if和end语言之间的语句。
如果有两个选择,那么if-else-end结构为
运算式;
else
在这里,如果表达式为真,则执行第一组命令;
如果表达式为假,则执行第二组命令。
如x=4;
ifx>
1
fprintf(‘x大于1’);
%显示x大于1
4.switch-case语句
switch-case语句的一般格式为
switchnum
casen1
command
casen2
casen3
……
otherwise
一旦num等于n1,n2,n3,…中的每个值或字符串时,就执行所对应的指令;
否则执行otherwise后的语句。
1.1.7MATLAB编程语言
MATLAB程序大致分为两类,即M脚本文件(M-Script)和M函数(M-Function),它们都是普通的文本文件。
M脚本文件中包含一组由MATLAB语言编写的语句,它类似于DOS下的批处理文件。
M脚本文件的执行方式很简单,用户只需在MATLAB的提示符“>
”下键入该M文件的文件名,MATLAB就会自动执行该M文件中的各条语句,并将结果直接返回到MATLAB工作区。
M函数格式是MATLAB程序设计的主流,一般情况下,不建议使用M脚本文件格式编程。
MATLAB的M函数是由function语句引导的,其基本格式如下:
function[返回变量列表]=函数名(输入变量列表)
[注释(由%引导)]
[检查输入变量和输出变量的格式]
[函数体语句]
在M函数中,输入变量和返回变量的个数分别由nargin和nargout两个变量确定,并且这两个变量是由MATLAB自动生成的,只要进入该函数就可以使用,如果输入变量的数目大于1,则应该用括号“()”将它们包围起来,中间用逗号分割。
注释语句段的每行语句都应该由“%”引导,百分号后面的内容不执行,只起注释作用。
实验一四相移相键控(QPSK)调制及解调实验
一、实验目的
1、掌握QPSK调制解调原理及特性。
2、掌握利用MATLAB编程实现调制及解调的方法。
二、实验内容
1、利用MATLAB编程实现QPSK调制及解调。
2、观察I、Q两路基带信号的特征及与输入NRZ码的关系。
3、观察I、Q调制解调过程中各信号变化。
三、基本原理
1、QPSK调制原理
QPSK又叫四相绝对相移调制,它是一种正交相移键控。
QPSK利用载波的四种不同相位来表征数字信息。
由于每一种载波相位代表两个比特信息,因此,对于输入的二进制数字序列应该先进行分组,将每两个比特编为一组,然后用四种不同的载波相位来表征。
我们把组成双比特码元的前一信息比特用a代表,后一信息比特用b代表。
双比特码元中两个信息比特ab通常是按格雷码排列的,它与载波相位的关系如表1-1所示,矢量关系如图1-1所示。
图1-1(a)表示A方式时QPSK信号矢量图,图1-1(b)表示B方式时QPSK信号的矢量图。
由于正弦和余弦的互补特性,对于载波相位的四种取值,在A方式中:
45°
、135°
、225°
、315°
,则数据
、
通过处理后输出的成形波形幅度有两种取值±
;
B方式中:
0°
、90°
、180°
、270°
通过处理后输出的成形波形幅度有三种取值±
1、0。
表1-1双比特码元与载波相位关系
双比特码元
载波相位
a
b
A方式
B方式
225°
315°
135°
90°
180°
270°
图1-1QPSK信号的矢量图
下面以A方式的QPSK为例说明QPSK信号相位的合成方法。
串/并变换器将输入的二进制序列依次分为两个并行序列,然后通过基带成形得到的双极性序列(从D/A转换器输出,幅度为±
)。
设两个双极性序列中的二进制数字分别为a和b,每一对ab称为一个双比特码元。
双极性的a和b脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图1-2中虚线矢量,将两路输出叠加,即得到QPSK调制信号,其相位编码关系如表1-2所示。
图1-2矢量图
表1-2QPSK信号相位编码逻辑关系
-1
a路平衡调制器输出
b路平衡调制器输出
合成相位
用调相法产生QPSK调制器框图如图1-3所示。
图1-3QPSK调制器框图
由图1-3可以看到,最初的基带信号是一个32位长的二进制序列,经过处理后变为4096维的二进制序列。
输入的基带信号经过串并变换,变成两路速率减半的序列,两个支路分别经过单/双极性变换器将单极性信号变换成双极性的二电平信号(即电平为+1和-1)I(t)和Q(t),然后对
和
进行调制,相加后即可得到QPSK信号。
经过串并变换后形成的两个支路如图1-4所示,一路为单数码元,另外一路为偶数码元,这两个支路互为正交,一个称为同相支路,即I支路。
I信号是一个4096维的双极性信号(值为+1或-1);
另外一路称为正交支路,即Q支路。
同样,Q信号也是一个4096维的双极性信号(值为+1或-1)。
I信号与本地产生的载波进行相乘,也即进行调制后,与经过调制的Q信号相加后,形成已调制的信号S(t)。
图1-4二进制码经串并变换后码型
QPSK信号经过高斯信道(即噪声信道)
2、QPSK解调原理
由于QPSK可以看作是两个正交2PSK信号的合成,故它可以采用与2PSK信号类似的解调方法进行解调,即由两个2PSK信号相干解调器构成,其原理框图如图1-5所示。
图1-5QPSK解调原理框图
3、数学推导
调制信号为:
调制信号经过高斯信道为:
I路相干解调:
Q路相干解调:
由公式推导可以知道,只需将
),
通过一个具有低通特性的系统即可获得只包含I和Q信息的信号,实现解调,这里选用了巴特沃斯型的低通滤波器。
附程序代码
%日期2013.1.14
%功能QPSK的调制解调,基带信号点数t(限偶数),基波频率w0可设置
clearall;
nb=32;
%传输的比特数
T=1;
%基带信号宽度,也就是基波频率
fc=8/T;
%载波频率
ml=2;
%调制信号类型的一个标志位(选取2的原因见23行)
c=4*nb;
%单周期采样点数
delta_T=T/c;
%采样间隔
fs=1/delta_T;
%采样频率
t=0:
delta_T:
nb*T-delta_T%限定t的取值范围c*nb
N=length(t);
%采样数
%%%%%%%%%%%%%%%%%%%调制部分
%基带信号的产生
data=fix(2*rand(1,nb));
%调用一个随机函数(0or1),输出到一个1*100的矩阵
datanrz=data.*2-1;
%变成极性码
fori=1:
nb
data1((i-1)/delta_T+1:
i/delta_T)=datanrz(i);
%将极性码变成对应的波形信号
end
%将基带信号变换成对应波形信号
data0((i-1)/delta_T+1:
i/delta_T)=data(i);
%将基带信号变成对应的波形信号
%串并转换,将奇偶位数据分开
idata=datanrz(1:
ml:
(nb-1));
%将奇偶位分开,因此间隔m1为2
qdata=datanrz(2:
nb);
%QPSK信号的调制
nb/2
ich(2*((i-1)/delta_T+1):
2*(i/delta_T))=idata(i);
forii=1:
N/T
a(ii)=(1/sqrt
(2))*cos(2*pi*fc*t(ii));
idata1=ich.*a;
%奇数位数据与余弦函数相乘,得到一路的调制信号
forj=1:
qch(2*((j-1)/delta_T+1):
2*(j/delta_T))=qdata(j);
forjj=1:
b(jj)=(1/sqrt
(2))*sin(2*pi*fc*t(jj));
qdata1=qch.*b;
%偶数位数据与余弦函数相乘,得到另一路的调制信号
st=idata1-qdata1;
%%%%%%%%%%%%%%%%%%%%%%%%信道中
SNR=0;
%信噪比
stn=awgn(st,SNR);
%%%%%%%%%%%%%%%%%%%%%%%%解调%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%设计滤波器%%%%%%%%
[B,A]=butter(3,0.01,'
low'
);
[h1,w]=freqz(B,A);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%相干解调
ist=stn.*a;
p=length(ist)
qst=stn.*(-b);
%%%%%%%%%%%%%%%%%%%%滤波
istl=filter(B,A,ist);
qstl=filter(B,A,qst);
%%%%%%%%%%%%%%%%%%%%%%%%%抽样判决%%%%%%%%%%
fori=1:
nb/2
ifistl(2*(p/nb)*(i-1)+(1*(p/nb)))>
=0
in(i)=1;
elsein(i)=0;
end
ifqstl(2*(p/nb)*(i-1)+(1*(p/nb)))>
qn(i)=1;
elseqn(i)=0;
%%%%%%%%%%%%%%%%%并串转换
y(2*i-1)=in(i);
y(2*i)=qn(i);
nb
yy((i-1)/delta_T+1:
i/delta_T)=y(i);
data
y
N
figure;
subplot(4,1,1)
plot(data0*0.7),title('
基带信号,4096维二进制序列,对应向量是data0'
subplot(4,1,2)
plot(data1*0.7),title('
双极性信号,4096维双极性序列,对应向量是data1'
subplot(4,1,3)
plot(ich*0.7),title('
I路数据,4096维双极性序列,对应向量是ich'
subplot(4,1,4)
plot(qch*0.7),title('
Q路数据,4096维双极性序列,对应向量是qch'
plot(ist),title('
相干解调I路信号,4096维且值为(-1,1)的序列,对应向量是ist'
plot(qst),title('
相干解调Q路信号,4096维且值为(-1,1)的序列,对应向量是qst'
plot(istl),title('
I路解调波形,4096维且值为(-1,1)的序列,对应向量是istl'
plot(qstl),title('
Q路解调波形,4096维且值为(-1,1)的序列,对应向量是qstl'
%%%%%%%%%%%%%%%%%画图%%%%%%%%%%%%%%%%%%%%%%%%%%%
subplot(4,2,1);
基带信号'
subplot(4,2,2);
psd(abs(fft(data0))),title('
基带信号频谱'
subplot(4,2,3);
plot(st),title('
调制信号'
subplot(4,2,4);
psd(abs(fft(st))),title('
调制信号频谱'
subplot(4,2,5);
plot(stn),title('
stn信道波形'
subplot(4,2,6);
psd(abs(fft(stn))),title('
经过高斯信道信号频谱'
subplot(4,2,7);
plot(yy*0.7),title('
解调后的基带信号'
subplot(4,2,8);
psd(abs(fft(yy))),title('
解调后的基带信号频谱'
实验二m序列产生及其特性实验
通过本实验掌握m序列的产生方法、特性及应用。
1、编写MATLAB程序生成并观察m序列,识别其特征。
2、编写程序验证m序列的相关性质,要求至少验证一条性质。
CDMA通信要求扩频序列具有良好的伪随机特性。
由于随机噪声难以重复产生,而伪随机噪声便于重复产生,因而伪随机序列(PN序列)被广泛应用于扩频通信。
目前应用最广的是m序列,它是由线性反馈移存器产生的周期最长的二进制数字序列。
码分多址系统主要采用两种长度的m序列:
一种是周期为
的m序列,又称短PN序列;
另一种是周期为
的m序列,又称为长PN码序列。
m序列主要有两个功能:
①扩展调制信号的带宽到更大的传输带宽,即所谓的扩展频谱;
②区分通过多址接入方式使用同一传输频带的不同用户的信号。
1、产生原理
图2-1给出了一个4阶移位寄存器序列生成器。
图2-14阶移位寄存器序列生成器
该序列生成器能够产生周期为15的0,1二值序列。
设初始状态(a1,a2,a3,a4)=(1,0,0,0),则周期序列输出为:
000111101011001。
图2-2是反馈移存