MATLAB通信建模实验仿真实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1:上采样与内插
一、实验目的
1、了解上采样与内插的基本原理和方法。
2、掌握上采样与内插的matlab程序的设计方法。
二、实验原理
上采样提高采样频率。上采样使得周期降低M倍,即新采样周期Tu和原有采样周期Ts的关系是T u=T s/M,根据对应的连续信号x(t),上采样过程从原有采样值x(kT s)生成新采样值x(kT u)=x(kT s/M)。操作的结果是在每两个采样值之间放入M-1个零值样点。
更实用的内插器是线性内插器,线性内插器的脉冲响应定义如下:
上采样值x(kT u)=x(kT s/M)通过与线性内插器的脉冲响应的卷积来完成内插。
三、实验内容
仿真正弦波采样和内插,通过基本采样x(k),用M=6产生上采样x u(k),由M=6线性内插得到样点序列x i(k)。
四、实验程序
% File: c3_upsampex.m
M = 6; % upsample factor
h = c3_lininterp(M); % imp response of linear interpolator
t = 0:10; % time vector
tu = 0:60; % upsampled time vector
x = sin(2*pi*t/10); % original samples
xu = c3_upsamp(x,M); % upsampled sequence
subplot(3,1,1)
stem(t,x,'k.')
ylabel('x')
subplot(3,1,2)
stem(tu,xu,'k.')
ylabel('xu')
xi = conv(h,xu);
subplot(3,1,3)
stem(xi,'k.')
ylabel('xi')
% End of script file.
% File: c3_upsample.m
function out=c3_upsamp(in,M)
L = length(in);
out = zeros(1,(L-1)*M+1); for j=1:L
out(M*(j-1)+1)=in(j); end
% End of function file.
% File: c3_lininterp.m function h=c3_lininterp(M) h1 = zeros(1,(M-1)); for j=1:(M-1) h1(j) = j/M; end
h = [0,h1,1,fliplr(h1),0]; % End of script file.
四、 实验结果
012345678910
x
0102030405060
x u
01020304050607080
-1
1x i
实验二:QPSK、16QAM信号的散点图、正交、同相分量波形图
一、实验目的
1、了解QPSK、16QAM调制的基本原理。
2、理解QPSK、16QAM散点图和其正交、同相分量波形图。
3、掌握QPSK、16QAM散点图和其正交、同相分量波形图的matlab程序设计。
4、
二、实验原理
如下是数字调制器的模型:
散点图是以正交分量x qk(t)和x dk(t)的函数画出来的图,为了构成一个QPSK信号,数据符号a k是通过每次取两个二进制符号构成的,本次实验中每个符号的d k和q k我们定义了+1和-1两个值,16-QAM中每个符号的d k和q k我们选择+1、-1、+3、-3四个值,脉冲成型滤波器选择六阶的巴特沃斯滤波器,通过六阶巴特沃斯滤波器后可以画出散点图。同时可以分别画出同相和正交分量的时域波形图。
三、实验内容
设计matlab程序,画出16-QAM的符号的散点图和通过六阶巴特沃斯滤波器后的散点图,以及16-QAM的符号的同相和正交分量的时域波形图。
四、实验程序
% File: c4_qamdemo.m
levelx = input('Number of D levels > ');
levely = input('Number of Q levels > ');
m = input('Number of symbols > ');
n = input('Number of samples per symbol > ');
bw = input('Filter bandwidth, 0
[xd,xq] = qam(levelx,levely,m,n);
[b,a] = butter(6,bw); % determine filter coefficients
yd = filter(b,a,xd); % filter direct coefficient
yq = filter(b,a,xq); % filter quadrature coefficient subplot(2,2,1) % first pane
plot(xd,xq,'o') % unfiltered scatterplot
a = 1.4;
maxd = max(xd); maxq = max(xq);
mind = min(xd); minq = min(xq);
axis([a*mind a*maxd a*minq a*maxq])
axis equal
xlabel('xd'); ylabel('xq')
subplot(2,2,2) % second pane
plot(yd,yq) % filtered scatterplot
axis equal;
xlabel('xd'); ylabel('xq');
sym = 30; % number of symbols in time plot nsym = (0:sym*n)/n; % x axis vector for time plots subplot(2,2,3) % third pane
plot(nsym(1:sym*n),yd(1:sym*n)) % filtered direct component xlabel('symbol index');
ylabel('xd');
subplot(2,2,4) % fourth pane
plot(nsym(1:sym*n),yq(1:sym*n)) % filtered quadrature component xlabel('symbol index');
ylabel('xq');
% End of script file.
子程序:
% File: qam.m
function [xd,xq] = qam(levelx,levely,m,n)
xd = mary(levelx,m,n);
xq = mary(levely,m,n);
% End of function file.
子程序:
% File: mary.m
function y= mary(levels,m,n)
% m = number of symbols
% n = samples per symbol
l = m*n; % Total sequence length
y = zeros(1,l-n+1); % Initalize output vector
lm1 = levels-1;
x=2*fix(levels*rand(1,m))-lm1;
for i = 1:m % Loop to generate info symbols
k = (i-1)*n+1;
y(k) = x(i);