信号与系统实验指导书(带源程序)

更新时间:2023-09-29 20:07:02 阅读量: 综合文库 文档下载

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

实验一 离散时间系统与MATLAB

一. 实验目的

1. 进一步加深对离散时间系统的理解。

2. 学习在MATLAB中怎样表示离散时间信号。 3. 熟悉离散时间信号的作图。 二. 实验步骤

1. 复习离散时间系统的有关内容。 2. 复习MATLAB的基本语法。 3. 按实验内容熟悉 stem。 4. 编写程序。

5. 输出结果,总结结论,按要求写出实验报告。 三. 实验内容

1.掌握stem函数

STEM(Y) plots the data sequence Y as stems from the x axis terminated with circles for the data value.

STEM(X,Y) plots the data sequence Y at the values specified in X. 例:t=[0:0.1:2]; x=cos(pi*t+0.6); stem(t,x); xn=[4,2,2,3,6,7]; stem(xn);

思考:STEM(Y)与STEM(X,Y)有什么不同?STEM与PLOT函数有什么不同?

2.掌握subplot函数

H = SUBPLOT(m,n,p), or SUBPLOT(mnp), breaks the Figure window into an m-by-n matrix of small axes, selects the p-th axes for the current plot, and returns the axis handle. The axes are counted along the top row of the Figure window, then the second row, etc. 例:

n1=0:3;x1=[1,1,1,1];subplot(221);stem(n1,x1);title('x1序列');

n2=0:7;x2=[1,2,3,4,4,3,2,1];subplot(222);stem(n2,x2);title('x2序列'); n3=0:7;x3=[4,3,2,1,1,2,3,4];subplot(223);stem(n3,x3);title('x3序列'); n4=0:7;x41=cos((pi/4)*n4);subplot(224);stem(n4,x41);title('x4序列'); 思考:subplot是怎样分配各个作图分区的顺序号的?

1

3.信号的运算

x1(n)?[1,0.7,0.4,0.1,0],x2(n)?[0.1,0.3,0.5,0.7,0.9],请作出x1(n)?x2(n),x1(n)x2(n)的图形。

思考:假如x1(n)与x2(n)长度不同,序列的求和和乘积运算能否执行,结果怎样? 程序:x1=[1,0.7,0.4,0.1,0] x2=[0.1,0.3,0.5,0.7,0.9]

subplot(121);stem(x1+x2);title('x1+x2'); subplot(122);stem(x1.*x2);title('x1*x2');

4.掌握freqs与freqz函数

freqs用于s域的频率响应的计算,f reqz用于z域的频率响应的计算。请参看两者的help文件。

例:建立2个函数文件,分别输入为系统函数的分子,分母,和角频率的最大值,输出为系统频率响应的db,幅度,相位,和角频率。参看下面的程序。 function[db,mag,pha,Omega]=freqs_m(b,a,Omega_Max) % s域频率响应的计算

Omega=[0:1:500]*Omega_Max/500; H=freqs(b,a,Omega); mag=abs(H);

db=20*log10((mag+eps)/max(mag));

2

pha=angle(H);

function[db,mag,pha,w]=freqz_m(b,a,w_Max); % z域频率响应的计算 w=[0:1:499]*w_Max/500; H=freqz(b,a,w); mag=abs(H);

db=20*log10((mag+eps)/max(mag)); pha=angle(H); (1)若Ha?s??1,请画出该系统幅频和相频特性。

s2?5s?6程序: b=1

a=[1 5 6]

Omega_Max=2*pi

[db,mag,pha,Omega]=freqs_m(b,a,Omega_Max)

subplot(221);plot(Omega,mag);title('AF的幅度响应'); subplot(222);plot(Omega,db);title('AF的幅度响应db'); subplot(223);plot(Omega,pha);title('AF的相位响应');

1?z?1(2)若H?z??,请画出该的幅频和相频特性。 ?1?21?0.8z?0.64z程序: b=[1 1]

a=[1 0.8 0.64] w_Max=2*pi

[db,mag,pha,w]=freqz_m(b,a,w_Max);

subplot(221);plot(w,mag);title('AF的幅度响应'); subplot(222);plot(w,db);title('AF的幅度响应db'); subplot(223);plot(w,pha);title('AF的相位响应');

3

思考:freqs,freqz的输入的各个参数与系统函数怎么联系起来,各种调用形式之间有什么不同点?观察上述系统的幅频和相频曲线,能得出什么结论? 四. 实验报告要求

1. 简述实验目的及原理。

2. 概括各函数的常用调用方式,记录程序运行的各种结果。 3. 回答思考题。

4

实验二 用FFT作谱分析

一. 实验目的

1. 进一步加深DFT算法原理和基本性质的理解(FFT是DFT的一种快速算法,FFT的运算结果必然满足DFT的基本性质)。

2. 熟悉FFT算法原理和FFT 函数的应用。

3. 学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因。 二. 实验步骤

1. 复习DFT的定义、性质和用 DFT作谱分析的有关内容。

2. 复习FFT算法原理与编程思想。熟悉FFT算法的MATLAB实现。

注:MATLAB提供fft函数来计算x?n?的DFT,fft函数是用机器语言,而不是以MATLAB指令写成的,因此执行速度快。

格式(1): y=fft(x) 计算x的FFT变换y。当x为矩阵,计算x中每一列信号的离散傅氏变换。当x的长度为2的幂时,采用基2算法,否则采用分裂基算法。

格式(2): y=fft(x,n) 计算x的n点FFT,当x长度大于n时,截断x,否则补零。 Plot线性绘图函数。stem:绘制离散序列图。subplot:多坐标设置与定位当前坐标系。figure:创建新的图形窗口(用于输出图形的窗口)。 3. 产生下列信号并进行谱分析。 (1)x1?n??R4?n?

?n?1,0?n?3?(2)x2?n???8?n4?n?7

?0其他n??4?n,0?n?3?(3)x3?n???n?34?n?7

?0其他n?(4)x4?n??cos(5)x5?n??sin?4n n

?8(6)x6?t??cos8?t?cos16?t?cos20?t 4. 编写程序

5. 输出结果,总结结论,按要求写出实验报告。 三. 实验内容

1. 对上述6个信号,逐个进行谱分析

5

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

Top