实验一 序列的产生
姓名:高洪美 学号:0819419213 班级:生医5班
一、 实验目的:
熟悉MATLAB中产生信号和绘制信号的基本命令。
二、 实验环境:
基于Windows PC的MATLAB。
三、 实验内容:
1、单位样本和单位阶跃序列;
2、指数信号;
3、正弦序列;
4、随机信号。
四、实验过程:
(一)单位样本和单位阶跃序列:
Q1.1运行程序P1.1以产生单位样本序列u[n]并显示它:
程序:clf;
% Generate a vector from -10 to 20
n = -10:20;
% Generate the unit sample sequence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample sequence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 20 0 1.2]);
所得图像如下所示:
Q1.2 命令clf,axis,title,xlable和ylable的作用是什么:
答:clf:运行程序时弹出显示图像的面板;
Axis:规定横纵坐标的范围;
Title:使图像面板上方显示相应的题目名称;
Xlable:定义横坐标的名字;
Ylable:定义纵坐标的名字。
Q1.3 修改程序P1.1以产生带有延时11个样本的延迟单位样本序列ud[n],运行修改的程序并且显示产生的序列。
程序:clf;
% Generate a vector from 0 to 30
n = 0:30;
% Generate the unit sample sequence
ud = [zeros(1,11) 1 zeros(1,19)];
% Plot the unit sample sequence
stem(n,ud);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([0 30 0 1.2]);
所得图像如下所示:
Q1.4修改程序P1.1以产生单位步长序列s[n]。运行修改后的程序并显示产生的序列:
程序:clf;
% Generate a vector from 0 to 30
n = 0:30;
% Generate the unit sample sequence
u = [1.*n];
% Plot the unit sample sequence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([0 30 0 30]);
所得图像如下所示:
Q1.5修改程序P1.1以产生带有超前7个样本的延时单位阶跃序列sd[n],运行修改后的程序并且显示产生的序列:
程序:clf;
% Generate a vector from -15to 30
n = -15:30;
% Generate the unit sample sequence
s=[zeros(1,8) ones(1,38)];
% Plot the unit sample sequence
stem(n,s);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-15 30 0 1.2]);
所得图像如下所示:
(二)指数信号:
Q1.6 运行程序P1.2,以产生复数值的指数序列。
程序:clf;
c = -(1/12)+(pi/6)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Time index n');ylabel('Amplitude');
title('Real part');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Time index n');ylabel('Amplitude');
title('Imaginary part');
所得图像如下所示:
Q1.7 那个参数控制该序列的增长或衰减率?那个参数控制该序列的振幅?
答:参数c控制该序列的增长或衰减率; 参数K控制该序列的振幅。
Q1.8 若参数c改为(1/12)+(pi/6)*i,将会发生什么情况?
答:若参数c改为(1/12)+(pi/6)*i,运行后的图像显示如下:
Q1.9 运算符real和imag的作用是什么?
答:运算符real和imag的作用分别是提取运算数值x的“实部”和“虚部”,以便于接下来分别将“实部”和“虚部”成像。
Q1.10 命令subplot的作用是什么?
答:subplot的作用是使“实部”和“虚部”用两张图像呈现出来:subplot(a,b,c),其中a代表图像分两行显示,b代表图像分一列显示,c代表第a行的第b列图像。
Q1.11 运行程序P1.3,以产生实数值的指数序列:
程序:clf;
n = 0:35; a = 1.2; K = 0.2;
x = K*a.^n;
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');
所得图像如下所示:
Q1.12 哪个参数控制该序列的增长或者衰减率?哪个参数控制该序列的振幅?
答:参数a控制该序列的增长或者衰减率;
参数K控制该序列的振幅。
Q1.13 算数运算符^和.^之间的区别是什么?
答:运算符“^”表示a的指数是n这个序列;运算符“.^”表示a的指数分别是n这个序列中的每一个数字,即对应的每一个元素。
Q1.14 若参数a小于1,会发生什么情况?将参数a改为0.9,将参数K改为20,再次运行程序P1.3.
答:(1)若参数a小于1,指数序列在“n=0:35”上是衰减的序列;
(2)将k改为20后的图像如图所示:
Q1.15 该序列的长度是多少?怎么样才能改变它?
答:该序列的长度是35;通过改变“n=0:35”中的“35”这个数字可以改变序列的长度。
Q1.16 使用MATLAB命令sum(s.*s)可计算用向量s表示的实数序列s[n]的能量。试求在习题Q1.11和习题Q1.14中产生的实数值指数序列x[n]的能量。
答:Q1.11中:ans=4.5673e+004;
Q1.14中:ans=2.1042e+003
(三)正弦序列:
Q1.17 运行程序P1.4以产生正弦序列并显示它。
程序:n = 0:40;
f = 0.1;
phase = 0;
A = 1.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf; % Clear old graph
stem(n,x); % Plot the generated sequence
axis([0 40 -2 2]);
grid;
title('Sinusoidal Sequence');
xlabel('Time index n');
ylabel('Amplitude');
axis;
所得图像如下所示:
Q1.18 该序列的频率是多少?怎样可以改变它?哪个参数控制该序列的相位?哪个参数控制该序列的振幅?该序列的周期是多少?
答:该序列的频率是0.1Hz;通过改变f的值可以此正弦序列的频率;参数phase控制该序列的初相位;参数A控制该序列的振幅;该序列的周期是10s。
Q1.19 该序列的长度是多少?怎么样可以改变它?
答:该序列的长度是41个时间单位,通过改变n的参数可以改变该序列的长度。
Q1.21 axis和grid命令的作用是什么?
答:axis的作用是规定图像显示的横纵坐标的范围;grid的作用是显示图像上面的“网格”。
Q1.22 修改程序P1.4,以产生一个,频率为0.9的正弦序列并显示它。把此序列和习题Q1.17所产生的序列相比较。修改程序P1.4以产生一个频率为1.1的正弦序列并显示它。把此序列与Q1.17中产生的序列相比较,评价你的结果。
答:修改正弦序列的频率只需要改变程序中“f”的值即可,第一个改为f=0.9,第二个改
为f=1.1,结果图像如下:
结论:该图像与f=0.1时的图像一样,因为该正弦序列的最小周期是2pi的,而当f=0.9与f=1.1时正好是2pi的整数倍。
Q1.23 修改上述程序,以产生长度为50、频率为0.08、振幅为2.5、相移为90度的一个正弦序列并显示它。该序列的周期是多少?
程序: n = 0:49;
f = 0.08;
phase =1.57;
A = 2.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf; % Clear old graph
stem(n,x); % Plot the generated sequence
axis([0 49 -2.5 2.5]);
grid;
title('Sinusoidal Sequence');
xlabel('Time index n');
ylabel('Amplitude');
axis;
所得图像如下所示:
答:周期为12.5s
Q1.24 在程序P1.4中用plot命令代替stem命令,运行新程序。新图形与习题Q1.17中产生的图形有什么区别?
答:原图像是离散的,新图像是连续的,说明plot命令是用平滑的线将各点连接起来产生连续波,而stem命令则是用各点来产生离散波。
Q1.25 在程序P1.4中用stairs命令代替stem命令,运行新程序。新图形与习题Q1.17和习题Q1.24中产生的图形有什么区别?
答:Stairs函数是用直线将相应的点连接起来,类似于阶梯状。
(四)随机信号:
Q1.26 编写一个MATLAB程序,以产生并显示一个长度为100的随机信号,该信号在区间[-2,2]中均匀分布。
程序:clf;
x=(rand(1,100))*4-2;
plot(x);
所得图像如下所示:
Q1.27 编写一个MATLAB程序,以产生并显示一个长度为75的高斯随机信号,该信号正态分布且均值为0,方差为3.
程序:clf;
x=0+3*randn(1,75);
stem(x);
所得图像如下所示:
Q1.28 编写一个MATLAB程序,以产生并显示五个长度为31的随机信号。
{X[n]}={A}
其中振幅A和相位Φ是统计独立的随机变量,振幅在区间0相位区间在0内均匀分布。
答:程序:clear,clc
n=0:31;
B=0;
A=0;
f=100
A=4.*rand(1,length(n));
B=2.*pi*rand(1,length(n));
x=A.*cos(2*pi*f.*n+B);
subplot(5,1,1)
plot(n,x)
axis([0 31 -4 4]);
grid;
title('随机正弦信号一');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n));
B=2.*pi*rand(1,length(n));
x=A.*cos(2*pi*f.*n+B);
subplot(5,1,2)
plot(n,x)
axis([0 31 -4 4]);
grid;
title('随机正弦信号二');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n));
B=2.*pi*rand(1,length(n));
x=A.*cos(2*pi*f.*n+B);
subplot(5,1,3)
plot(n,x)
axis([0 31 -4 4]);
grid;
title('随机正弦信号三');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n));
B=2.*pi*rand(1,length(n));
x=A.*cos(2*pi*f.*n+B);
subplot(5,1,4)
plot(n,x)
axis([0 31 -4 4]);
grid;
title('随机正弦信号四');xlabel('n');ylabel('幅值A');
A=4.*rand(1,length(n));
B=2.*pi*rand(1,length(n));
x=A.*cos(2*pi*f.*n+B);
subplot(5,1,5)
plot(n,x)
axis([0 31 -4 4]);
grid;
title('随机正弦信号五');xlabel('n');ylabel('幅值A');
所得图像如下所示:
五、试验总结:通过本次试验初步认识了MATLAB软件,并使用其产生信号和绘制信号的基本命令,更加深刻的理解了数字信号的产生及其概念。