数字信号处理实验报告2

更新时间:2023-07-25 14:28:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 序列的产生

姓名:高洪美 学号: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软件,并使用其产生信号和绘制信号的基本命令,更加深刻的理解了数字信号的产生及其概念。

3

2.5

2

1.5

1

0.5

01020304050607080

本文来源:https://www.bwwdw.com/article/woqm.html

Top