MATLAB通信建模实验仿真实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档