DSP-B实验指导书 下载本文

实验1 Matlab的基本应用

一、实验目的

1、 掌握MATLAB软件的基本使用方法。

2、 掌握变量和文件名的命名规则以及M文件编辑器的基本使用方法。 3、 学会使用MATLAB的帮助系统。

4、 掌握数组的构造方法和数组、矩阵的四则运算。 5、 掌握绘图常用函数的使用。

6、 掌握简单的脚本文件和函数文件的编写及调试方法。

二、实验内容与要求

1. 已知u?1,v?3,用MATLAB分别执行下列语句。并在实验报告中记录语句和结果。

2v?24u42v3?v a. b. c. d.2333v3v?u?u?v? 注意:变量名的命名规则。

2. 在M文件编辑器中编写程序画出函数y?2e?0.2x的图形,要求标注相关信息(如标题、横坐标、纵坐标等)以增加图形的可读性。

3. 构造数组并回答以下指令运行后的结果是什么。在实验报告中列出方法和结果

?1.1?3.23.40.6??

A??0.61.1?0.63.1???0??1.30.65.5?

(1)求矩阵A的大小,(提示:函数size)。并回答它与length(A)的区别是什么?

(2)A(:, 3) A(3, :) A(2,3) A(2:end,:) A(1,[1 3]) (3 ) 列出数组A中所包含的数值0.6的下标。提示:用函数find。 (4)A(1:2,[1 4])=[20 21; 22 23]

4. 构造以下数组并回答以下表达式的结果是什么。在实验报告中列出方法和结果

?2?2??1?1? a??b???02?

?12????- 1 -

?1?c??? d?eye(2)

??2? (1)r = a + b; (2)r = a * d; (3)r = a .* d; (4)r = a * c; (5)r = a .* c; (6)r = a \\ b; (7)r = a .\\ b; (8)r = a .^ b; (9)r=a.*[c c]

5. 运行下列语句,回答以下命令运行的结果。

round(3.4) ceil(3.4) floor(3.4) round(3.5) ceil(3.5) floor(3.5) fix(3.5) round(-3.4) ceil(-3.4) floor(-3.4) round(-3.5) ceil(-3.5) floor(-3.5) fix(3.4)

fix(-3.4)

fix(-3.5)

Mod (12,5) Rem (12,5) Mod (-12,5) Rem (-12,5) 回答这几个函数的作用,并比较它们之间的区别。

6. 编写脚本文件。输入一组数据(数据可为正、负或零),根据以下公式计算其平均值和标准方差。(注:采用for循环)

1x?N?xi?1Ni

注意:学习程序的调试方法。

7. (选做)编写函数文件,通过输入不同的x,y值,根据以下公式计算f(x,y)的值并显示。

?x?yx?0,y?0?x?y2x?0,y?0? f(x,y)??2?x?yx?0,y?022?x?0,y?0?x?y

注意:函数文件的编写格式和调用方法。

- 2 -

实验2 序列的时域表示与运算

一、实验目的

1. 掌握离散时间信号的表示;

2. 掌握离散时间信号的基本运算(加、减、乘、反折、移位)的规则; 3. 能用MATLAB进行简单的编程;

4. 学习MATLAB函数的调用,实现序列的显示和运算。

二、实验内容与要求

请在实验报告中记录以下程序和结果

1.用MATLAB产生并画出下列序列的样本。

1)

x1(n)???m?1?[??n?2m????n?2m?1?],0?n?25

m?02n102) x2(n)?n[u?n?5??u?n?6?]?10??n??20?0.5?[u?n?4??u?n?10?] 3) x3(n)??0.9?cos(0.2?n??/3),0?n?20 4)

nx4(n)?10cos(0.0008?n2)?w?n?,0?n?100,式中w?n?是在[-1,1]之间均匀分

布的随机序列;

2. 学习函数的调用。设x(n)?{1,2,3,4,5,6,7,6,5,4,3,2,1},求解并画出下面序列。

? y1(n)?2x(n?5)?3x(n?4) y2(n)?x(3?n)?x(n)x(n?2) 3. 已知序列x[n]?e(?0.1?j0.3)n?10?n?10 ,在一个图形窗中分别画出该序列的

实部、虚部、幅值和相位图。

注:学习abs、angle、real、imag、subplot、title函数的使用。

4. 若线性时不变系统的单位样值响应为h(n)?(0.6)nu(n),输入序列

x(n)?u(n)?u(n?10),求系统的输出y(n),并画出其波形图。(思考:你可以用几种

方法来实现?)

- 3 -

三、实验所用部分函数如下

1.单位冲激序列(信号)生成函数impseq [x,n] = impseq(n0,n1,n2)

2.阶跃序列(信号)生成函数stepseq [x,n] = stepseq(n0,n1,n2) 3.序列(信号)相加函数sigadd [y,n] = sigadd(x1,n1,x2,n2)

以上为MATLAB没有,需外加入的函数(将相应函数拷贝到自己当前目录下) 4. 正(余)弦生成函数sin、cos

y = sin(x) ,y = cos(x) (注意:x以弧度为单位) 5. 随机序列生成函数rand,用法如:

Y = rand (n) 生成n×n阶的均匀分布随机阵; Y = rand (m, n) 生成m×n阶的随机阵;

rand 返回在[0,1]区间上的一个随机数;

将上面的rand写成randn则可以生成均值为0、方差为1的正态分布的随机变量。 6.全1矩阵生成函数ones (m, n) :生成m×n阶全1矩阵 7.全0矩阵生成函数zeros (m, n) :生成m×n阶全0矩阵 8.离散序列绘图函数stem

stem (y) 以1、2、3…为横坐标, y为纵坐标画杆形图;

stem(x, y) 以x为横坐标, y为纵坐标画杆形图(x与y数据个数必须一致); stem (…,’fill’) 选项’fill’指定杆顶为实心,若无此选项则默认空心。 9.线性坐标平面绘图函数plot

用法与stem 类似,具体用法可查看MATLAB帮助 以上为MATLAB内置函数(在此仅为同学复习MATLAB提供)

四、参考程序

1.典型序列函数

1)单位阶跃函数(the step sequence)

function [x,n] = stepseq(n0,n1,n2)

% Generates x(n) = u(n-n0); n1 <= n,n0 <= n2 % ------------------------------------------ % [x,n] = stepseq(n0,n1,n2)

- 4 -