4.离散时间系统的Matlab实现

合集下载

matlab实现:常见的离散时间信号

matlab实现:常见的离散时间信号

1. 单位抽样序列,或称为离散时间冲激,单位冲激:⎩⎨⎧=01)(n δ 00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n 2.单位阶跃序列⎩⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones( )函数实现。

);,1(N ones x =3.正弦序列)(cos )(0φω+=n A n x 这里,,,0ωA 和φ都是实数,它们分别称为本正弦信号)(n x 的振幅,角频率和初始相位。

πω200=f 为频率。

4.复正弦序列 n j e n x ω=)(5.实指数序列n A n x α=)(6. 随机序列长度为N 的随机序列基本数学函数参考教材P69页以及随后的使用说明。

注意使用行向量,特别是冒号运算符。

举例,长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=1. 单位采样长度为N 的单位采样序列u(n)可以通过下面的MATLAB 命令获得:u=[1 )1,1(-N zeros ];延迟M 个采样点的长度为N 的单位采样序列ud(n)(M<N)可以用下面命令获得:ud=[),1(M zeros 1 )1,1(--M N zeros ];2. 单位阶跃序列长度为N 的单位阶跃序列s(n)可以用下面的MATLAB 命令获得:)];,1([N ones s =延迟的单位阶跃序列可以使用类似于单位采样序列的方法获得。

3. 正弦序列长度为N 的正弦序列在MATLAB 中实现:)/***2cos(*1:0phase Fs n f pi A x N n +=-=4. 指数序列长度为N 的指数序列在MATLAB 中实现:)**exp(1:0n j x N n ω=-=5. 实指数序列长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=6. 随机序列长度为N 的随机序列在MATLAB 中实现:);,1(N rand x =。

数字信号处理实验报告 (实验四)

数字信号处理实验报告 (实验四)

实验四 离散时间信号的DTFT一、实验目的1. 运用MA TLAB 计算离散时间系统的频率响应。

2. 运用MA TLAB 验证离散时间傅立叶变换的性质。

二、实验原理(一)、计算离散时间系统的DTFT已知一个离散时间系统∑∑==-=-Nk k N k k k n x b k n y a 00)()(,可以用MATLAB 函数frequz 非常方便地在给定的L 个离散频率点l ωω=处进行计算。

由于)(ωj e H 是ω的连续函数,需要尽可能大地选取L 的值(因为严格说,在MA TLAB 中不使用symbolic 工具箱是不能分析模拟信号的,但是当采样时间间隔充分小的时候,可产生平滑的图形),以使得命令plot 产生的图形和真实离散时间傅立叶变换的图形尽可能一致。

在MA TLAB 中,freqz 计算出序列{M b b b ,,,10 }和{N a a a ,,,10 }的L 点离散傅立叶变换,然后对其离散傅立叶变换值相除得到L l eH l j ,,2,1),( =ω。

为了更加方便快速地运算,应将L 的值选为2的幂,如256或者512。

例3.1 运用MA TLAB 画出以下系统的频率响应。

y(n)-0.6y(n-1)=2x(n)+x(n-1)程序: clf;w=-4*pi:8*pi/511:4*pi;num=[2 1];den=[1 -0.6];h=freqz(num,den,w);subplot(2,1,1)plot(w/pi,real(h));gridtitle(‘H(e^{j\omega}的实部’))xlabel(‘\omega/ \pi ’);ylabel(‘振幅’);subplot(2,1,1)plot(w/pi,imag(h));gridtitle(‘H(e^{j\omega}的虚部’))xlabel(‘\omega/ \pi ’);ylabel(‘振幅’);(二)、离散时间傅立叶变换DTFT 的性质。

数字信号处理实验4 离散时间系统的频域分析

数字信号处理实验4  离散时间系统的频域分析

实验4 离散时间系统的频域分析一、实验目的(1)了解离散系统的零极点与系统因果性和稳定性的关系; (2)加深对离散系统的频率响应特性基本概念的理解; (3)熟悉MATLAB 中进行离散系统零极点分析的常用子函数; (4)掌握离散系统幅频响应和相频响应的求解方法。

二、知识点提示本章节的主要知识点是频率响应的概念、系统零极点对系统特性的影响;重点是频率响应的求解方法;难点是MATLAB 相关子函数的使用。

三、实验原理1.离散时间系统的零极点及零极点分布图设离散时间系统系统函数为NMz N a z a a z M b z b b z A z B z H ----++++++++==)1()2()1()1()2()1()()()(11 (4-1) MATLAB 提供了专门用于绘制离散时间系统零极点图的zplane 函数: ①zplane 函数 格式一:zplane(z, p)功能:绘制出列向量z 中的零点(以符号"○" 表示)和列向量p 中的极点(以符号"×"表示),同时画出参考单位圆,并在多阶零点和极点的右上角标出其阶数。

如果z 和p 为矩阵,则zplane 以不同的颜色分别绘出z 和p 各列中的零点和极点。

格式二:zplane(B, A)功能:绘制出系统函数H(z)的零极点图。

其中B 和A 为系统函数)(z H (4-1)式的分子和分母多项式系数向量。

zplane(B, A) 输入的是传递函数模型,函数首先调用root 函数以求出它们的零极点。

②roots 函数。

用于求多项式的根,调用格式:roots(C),其中C 为多项式的系数向量,降幂排列。

2.离散系统的频率特性MATLAB 提供了专门用于求离散系统频响特性的freqz 函数,调用格式如下: ①H = freqz(B,A,W)功能:计算由向量W (rad )指定的数字频率点上(通常指[0,π]范围的频率)离散系统)(z H 的频率响应)e (j ωH ,结果存于H 向量中。

离散信号时域分析的MATLAB实现

离散信号时域分析的MATLAB实现

实验十一 离散信号时域分析的MATLAB 实现一、实验目的1. 熟悉MATLAB 编程方法、常用语句和可视化绘图技术;2. 掌握序列时域运算的MATLAB 编程方法。

二、实验原理在用MATLAB 表示离散信号并将其可视化时,由于矩阵元素个数是有限的,因此无法表示无限长序列;另外,离散信号无法进行符号运算。

在MATLAB 中,绘制离散序列波形图的专用命令为stem( )。

其格式有:(1)stem(k,f)在图形窗口中,绘制出样值顶部为空心圆的序列f (k)波形图。

(2)stem(k,f ,’fill’)在图形窗口中,绘制出样值顶部为实心圆的序列f (k)波形图。

下面介绍离散序列的MATLAB 表示、基本运算(相加、相乘、平移、反转、尺度变换)、卷积和的实现及其图形显示方法。

1.单位序列δ(k ) 单位序列的定义:⎩⎨⎧≠==0,00,1)(k k k δ下面为绘制δ(k-k 0)波形图的子程序:function impseq(k1,k2,k0) %单位序列δ(k-k0),k0为时移量k=k1:k2; %k1,k2为序列的起止序列号 n=length(k); x=zeros(1,n);x(1,k0-k1+1)=1; %在k0时刻信号赋值为1 stem(k,x,'fill') axis([k1,k2,0,1.1])title('单位序列d(k-k0)')输入如下命令,则可获得单位序列δ(k-3)的波形图,如图11-1所示。

impseq(-1,5,3)图11-12.单位阶跃序列ε(k ) 单位序列的定义:⎩⎨⎧<≥=0,00,1)(k k k ε下面为绘制ε(k-k 0)波形图的MATLAB 子程序。

function stepseq(k1,k2,k0) %单位阶跃序列,k0为时移量 k=k1:k0-1; %k1,k2为序列的起止序列号 kk=length(k);x=zeros(1,kk); %k0前信号赋值为0 stem(k,x,'fill') %绘出k1~k0-1的波形(0值) hold onn=k0:k2; nn=length(n);x=ones(1,nn); %k0后信号赋值为1 stem(n,x,'fill') %绘出k0~k2的波形(1值) hold offaxis([k1,k2,0,1.1]) title('单位阶跃序列')运行如下命令,则可获得单位序列ε(k-3)的波形图,如图11-2所示。

离散时间信号处理与matlab仿真 概述及解释说明

离散时间信号处理与matlab仿真 概述及解释说明

离散时间信号处理与matlab仿真概述及解释说明1. 引言1.1 概述离散时间信号处理是指对离散时间信号进行分析、处理和转换的过程。

离散时间信号处理在许多领域中都起着重要作用,例如通信系统、音频处理、图像处理等。

通过对离散时间信号进行采样和量化,我们可以将连续时间信号转换为离散时间信号,并对其进行数字化处理。

随着计算机技术的发展,MATLAB成为了一种强大的工具,被广泛应用于离散时间信号处理。

MATLAB提供了丰富的函数和工具箱以及易于使用的界面,使离散时间信号处理变得更加简单和高效。

1.2 文章结构本文将按以下结构来介绍离散时间信号处理与MATLAB仿真:- 第2部分: 离散时间信号处理概述。

在这一部分中,我们将介绍信号和系统的基础知识,并比较离散时间信号与连续时间信号之间的差异。

此外,我们还将探讨离散时间信号处理在各个应用领域中的应用案例。

- 第3部分: MATLAB在离散时间信号处理中的应用。

这一部分将重点介绍MATLAB工具箱的使用方法,并提供离散时间信号处理算法在MATLAB中的实现方式。

同时,我们将通过一些具体案例来演示MATLAB在离散时间信号处理中的应用。

- 第4部分: 离散时间信号处理的常见问题和挑战。

在这部分中,我们将探讨采样频率选择与混叠效应、数字滤波器设计与优化原理以及非线性失真和量化误差分析等离散时间信号处理中常见的问题和挑战。

- 最后,我们将在第5部分总结本文,并对离散时间信号处理与MATLAB仿真的重要性进行回顾和总结,同时展望未来离散时间信号处理方法研究的发展方向。

1.3 目的本文目的是为读者提供一个全面且详细的概述,使其了解离散时间信号处理以及MATLAB仿真在该领域中的应用。

希望通过阅读本文,读者能够加深对离散时间信号处理基础知识的理解,并掌握使用MATLAB进行仿真和实现离散时间信号处理算法的方法。

此外,本文还旨在引起读者对离散时间信号处理领域中常见问题和挑战的关注,并对相关研究方向进行思考。

实验四-离散时间系统的频域分析(附思考题程序)

实验四-离散时间系统的频域分析(附思考题程序)

实验四 离散时间系统的频域分析1.实验目的(1)理解和加深傅里叶变换的概念及其性质。

(2)离散时间傅里叶变换(DTFT)的计算和基本性质。

(3)离散傅里叶变换(DFT)的计算和基本性质。

2.实验原理对离散时间信号进行频域分析, 首先要对其进行傅里叶变换, 通过得到的频谱函数进行分析。

离散时间傅里叶变换(DTFT, Discrete-time Fourier Transform)是傅立叶变换的一种。

它将以离散时间nT (其中 , T 为采样间隔)作为变量的函数(离散时间信号)f(nT)变换到连续的频域, 即产生这个离散时间信号的连续频谱 , 其频谱是连续周期的。

211200)()|()()DTFT kw N knTN N i iwT iwnT N n n F e f nT e f nT e 长度为N 的有限长信号x(n), 其N 点离散傅里叶变换为:10()[()]()kn N N n X k DFT x n x n W 。

X(k)的离散傅里叶逆变换为: 。

DTFT 是对任意序列的傅里叶分析, 它的频谱是一个连续函数;而DFT 是把有限长序列作为周期序列的一个周期, 对有限长序列的傅里叶分析, DFT 的特点是无论在时域还是频域都是有限长序列。

3.实验内容及其步骤(1)复习傅里叶变换的定义及其性质, 加深理解。

(2)熟悉离散时间傅里叶变换的概念及其性质。

参考一: 计算离散时间傅里叶变换, 并绘制图形。

已知有限长序列x(n)={1,2,3,4,5}。

n=-1:3;x=1:5;k=0:500;w=(pi/500)*k;X=x*(exp(-j*2*pi/500)).^(n'*k);magX=abs(X);angX=angle(X);realX=real(X);imagX=imag(X);subplot(2,2,1);plot(w/pi,magX);grid;xlabel('');ylabel('模值 ');title('模值部分');subplot(2,2,2);plot(w/pi,angX);grid;xlabel('pi 为单位');ylabel('弧度');title('相角部分');subplot(2,2,3);plot(w/pi,realX);grid;xlabel('');ylabel('实部');title('实部部分');subplot(2,2,4);plot(w/pi,imagX);grid;xlabel('pi为单位');ylabel('虚部');title('虚部部分');参考二: 计算离散时间傅里叶变换。

如何在Matlab中进行离散系统设计

如何在Matlab中进行离散系统设计

如何在Matlab中进行离散系统设计离散系统设计在工程领域中扮演着重要的角色。

离散系统指的是使用一系列离散时间点进行操作和观测的系统。

而Matlab作为一种强大的数学软件,提供了丰富的工具和函数来进行离散系统设计。

本文将介绍如何使用Matlab进行离散系统设计,并提供一些实际案例来帮助读者理解和应用这些概念。

一、离散系统和离散系统设计概述离散系统是指系统的状态和输出在离散时间点上进行操作和观测,与连续系统相对应。

离散系统设计的目标是通过对系统进行建模、分析和控制,以实现所需的性能指标。

离散系统设计的基本步骤包括系统建模、性能分析和控制器设计。

系统建模是指将实际系统抽象为数学模型,以方便进行分析和设计。

性能分析是评估系统在不同工况下的性能表现,如稳定性、响应速度等。

控制器设计是根据性能要求设计出合适的控制器,使得系统能够满足需求。

二、Matlab中的离散系统建模在Matlab中,可以使用多种方法进行离散系统的建模。

最常用的方法是差分方程法和状态空间法。

差分方程法是将系统的输入输出关系表示为差分方程的形式,而状态空间法则是使用状态向量和状态方程来描述系统的动态行为。

在使用差分方程法进行建模时,可以使用Matlab中的函数tf或zpk来创建传递函数模型。

传递函数模型是用来描述系统输入和输出之间的关系的一种数学表达式。

例如,通过以下代码可以创建一个二阶传递函数模型:```matlabnum = [1, 0.5];den = [1, -0.6, 0.08];sys = tf(num, den, 1);```在使用状态空间法进行建模时,可以使用Matlab中的函数ss来创建状态空间模型。

状态空间模型是使用状态向量和状态方程来描述系统的动态行为的一种数学表达式。

例如,通过以下代码可以创建一个二阶状态空间模型:```matlabA = [0, 1; -0.08, 0.6];B = [0; 1];C = [1, 0.5];D = 0;sys = ss(A, B, C, D, 1);```三、离散系统性能分析离散系统的性能分析是评估系统在不同工况下的性能表现,如稳定性、响应速度等。

实验七--离散系统分析的MATLAB实现讲解学习

实验七--离散系统分析的MATLAB实现讲解学习

实验七 离散系统分析的MATLAB 实现一、实验目的1、掌握利用MATLAB 绘制系统零极点图的方法;2、掌握离散时间系统的零极点分析方法;3、学习离散系统响应的MATLAB 求解方法;4、掌握用MATALB 实现离散系统频率特性分析的方法;5、深刻理解离散系统的系统函数零极点对系统频响的影响,可以根据 零极点知识设计简单的滤波器。

二、基本原理(一)离散系统零极点线性时不变离散系统可用线性常系数差分方程描述,即()()N Miji j a y n i b x n j ==-=-∑∑ (1)其中()y k 为系统的输出序列,()x k 为输入序列。

将式(1)两边进行Z 变换,00()()()()()Mjjj Nii i b zY z B z H z X z A z a z-=-====∑∑ (2) 将式(2)因式分解后有:11()()()Mjj Nii z q H z Cz p ==-=-∏∏ (3)其中C 为常数,(1,2,,)j q j M =L 为()H z 的M 个零点,(1,2,,)i p i N =L 为()H z 的N 个极点。

系统函数()H z 的零极点分布完全决定了系统的特性,若某系统函数的零极点已知,则系统函数便可确定下来。

因此,系统函数的零极点分布对离散系统特性的分析具有非常重要意义。

(二)离散系统零极点图及零极点分析 1、零极点图的绘制设离散系统的系统函数为()()()B z H z A z =则系统的零极点可用MATLAB 的多项式求根函数roots()来实现,调用格式为:p=roots(A) 其中A 为待求根多项式的系数构成的行矩阵,返回向量p 则是包含多项式所有根的列向量。

如多项式为231()48B z z z =++,则求该多项式根的MATLAB 命令为为:A=[1 3/4 1/8]; P=roots(A) 运行结果为: P =-0.5000 -0.2500需注意的是,在求系统函数零极点时,系统函数可能有两种形式:一种是分子、分母多项式均按z 的降幂次序排列;另一种是分子、分母多项式均按1z -的升幂次序排列。

山东大学matlab实验3

山东大学matlab实验3

实验3 离散时间系统的特性离散时间系统的输出1.实验内容给定离散时间系统y(n)=x(n)+x(n-1)+0.9y(n-1)-0.81y(n-2)1)求系统函数,调用zplane,画出系统的零极图;2)调用freqz,画出系统的幅度响应和相位响应。

3)系统输入信号为x(n)=sin(n*pi/3)+5cos(n*pi) (0≤n ≤ 49),用四种方法计算系统的输出y(n)a. 用差分方程递推b. 调用conv函数c. 调用filter函数d. 利用DFT计算观察结果,判断四种方法得到的结果是否一致?如果使得上述方法结果一致,编程时有关参数应该怎样选取?2.编程原理、思路和公式1)调用zplane可以求出系统的零极图2)调用freqz函数,可以求出系统的幅度响应和相位响应3)conv——用单位抽样响应和xn的卷积可以求出yn4)filter——用filter(b,a,xn)可以求出yn5)DFT----用时域和频域的转换可以求出yn在求系统的输出函数时,可以用差分方程递推求得,也可以用DFT计算。

同时,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以先用h=impz(p,d,N)求出系统的冲激响应,然后再利用y=conv(x,h)计算卷积求出输出函数。

其中,d为差分方程输出y的系数,p表示输入x的系数,N表示冲激响应输出的序列个数。

3.程序脚本,并注释1)求系统函数:1121()10.90.81zH zz z---+=-+程序:b=[1,1];a=[1,-0.9,0.81];zplane(b,a); %调用zplane函数,求零极图xlabel('虚部');ylabel('实部');title('零极图');2)[H,w]=freqz(b,a,250); %调用freqz函数,指定计算250个点并求幅度响应与相位响应图subplot(2,1,1);plot(w,abs(H));xlabel('频率');ylabel('幅度');subplot(2,1,2);plot(w,angle(H));xlabel('频率');ylabel('相位');3)a)用差分方程递推y(1)=5;y(2)=5.366; %设初始条件的值(为了与其它算法前两个数值保持一致,所以选择了如此两个初值!)n=2:49; %matlab要求输入必须为正值,所以x(n)要从x(1)开始xn=sin(n*pi/3)+5*cos(n*pi);for m=3:49 %同理,从y(1)开始有意义y(m)=x(m)+x(m-1)+0.9*y(m-1)-0.81*y(m-2);end %for循环,计算输出的值stem(y);title('差分方程递推法'); %画图并命名b)调用conv函数b=[1,1];a=[1,-0.9,0.81];n=0:49;xn=sin(n*pi/3)+5*cos(n*pi);hn=impz(b,a,50); %求系统冲击响应y=conv(xn,hn); %求卷积和n=length(hn)+length(xn)-1; %两序列卷积结果的长度为(M+N-1)stem(y);title('调用conv函数');c)调用filter函数b=[1,1];a=[1,-0.9,0.81];n=0:49;xn=sin(n*pi/3)+5*cos(n*pi);xn1=[xn zeros(1,49)]; %将序列增长至99点hn=filter(b,a,xn1); %解差分方程,求系统输出信号n=0:length(hn)-1; %序列长度stem(hn);title('调用filter函数');d)利用dft计算子函数:dft:function y=dft(xn,N)n=0:N-1;k=0:N-1;y=xn*exp(-j*2*pi*k*n'/N)end %根据dft的定义式,编写了此子函数idft:function xn=idft(xk,N)n=0:N-1;k=0:N-1;WN=exp(-j*2*pi/N);nk=-n'*k;WNnk=WN.^nk;xn=xk*WNnk/N;end %根据idft的定义式,编写了此子函数主函数:b=[1,1];a=[1,-0.9,0.81];n=0:49;xn=sin(n*pi/3)+5*cos(n*pi) ;xn1=[xn zeros(1,49)]; %将序列扩展hn=impz(b,a,50); %求系统冲击响应hn1=[hn' zeros(1,49)]; %将冲击响应扩展N=99;xk=dft(xn1,N);hk=dft(hn1,N);yk=xk.*hk; %做卷积y=idft(yk,N); %逆离散傅里叶变换stem(y);title('利用dft计算');4.仿真结果、图形1)系统的零极图3)幅度响应和相位响应3)用差分方程递推4)调用conv函数5)调用filter函数6)利用dft计算5.结果分析和结论调用conv函数时,得到的序列长度为M+N-1点(即99点),所以在其他几个方式中,要调节相应的参数来达到一致。

离散信号及离散系统的MATLAB编程实现

离散信号及离散系统的MATLAB编程实现

数字信号处理课程实验报告实验名称离散信号及离散系统的MATLAB编程实现系别教师姓名实验地点实验日期一、实验内容1、用MATLAB仿真(编写)离散序列2、常见序列运算3、差分方程的求解4、系统零极点的求解。

(红色部分为必做项目)二、实验目的1. 复习离散时间的信号和系统,复习离散时间重要类型的信号和它们的运算的实现。

2. 熟悉MATLAB软件的集成开发环境,学会利用MATLAB编程及获得帮助的方法。

3. 学会利用MATLAB的绘图功能。

三、涉及实验的相关情况介绍(包含使用软件或实验设备等情况)matlab软件,计算机四、实验试做记录(含程序、数据记录及分析)1、 Matlab表示序列MATLAB中,可采用向量表示序列,由于MATLAB中对序列下标默认为从1开始递增,因此要表示离散信号,一般应采用两个向量分别对信号的自变量和因变量进行描述。

如, n= -3~4,在MATLAB中表示为>> n = [-3, -2, -1, 0, 1, 2, 3, 4]; %自变量取值>> x = [ 2, 1, -1, 0, 1, 4, 3, 7]; %因变量取值说明:(1)向量可用方括号[ ]表示。

(2)当向量取值连续变化时可用冒号运算符“:”简化赋值过程,如的n值,可简化为n=[-3:4]或n= -3:4 。

(3)分号“;”表示不回显表达式的值。

(4)“%”表示其后内容为注释对象。

(5)符号“>>”是MATLAB命令窗口的输入提示符,此外,为便于多次调用,也可在m文件中输入相应的命令语句。

利用MATLAB,还可对信号的波形进行描述,常采用的绘图语句有stem,plot,subplot, axis,title,xlabel,ylabel,gtext, hold on, hold off, grid 等。

其中stem 绘制离散图形;plot 绘制连续图形;subplot 用于绘制子图,应在stem 或plot 语句前调用;axis 指定x 和y轴的取值范围,用在stem或plot语句后;title 标注图形名称,xlabel, ylabel 分别标注x轴和y轴名称;gtext可将标注内容放置在鼠标点击处;hold on和 hold off 用于控制对象绘制方式,是在原图上还是在新图上绘制;grid用于绘制网格。

离散系统的时域分析matlab.(DOC)

离散系统的时域分析matlab.(DOC)

实验一 常见离散信号的MATLAB 产生和图形显示一、 实验目的加深对常见离散信号的理解 二、实验原理1、单位抽样序列的产生,10,0{=≠=n n n )(δ在MATLAB 中可以用zeros()函数实现 x=[1,zeros(1,N-1)]; 或x=zeros(1,N); x(1)=1;2、单位阶跃序列的产生0,10,0{u ≥<=n n n )(在MATLAB 中可以用ones()函数实现 x=one(1,N); 3、正弦序列的产生 在MATLAB 中实现方法如下: N=0:N-1X=A*sin(2*pi*f*n/fs+fai) 4、复正弦序列的产生jwn e A n x *)(=在MATLAB 中实现方法如下:n)*w *exp(j *A 1:0=-=x N n5、实指数序列的产生na A n x *)(= 在MATLAB 中实现方法如下:na A x N n .^*1:0=-=三、实验内容及步骤编制程序产生以下信号,并绘出其图形。

1)产生64点的单位抽样序列)(n δN=64x=[1,zeros(1,N-1)]stem(x)2)产生64点并移位20位的单位抽样序列)20(-n δN=64x=[0,zeros(1,N-1)] x(20)=1 stem(x)3)任意序列)5(7.0)4(9.2)3(6.5)2(8.1)1(4.3)(0.8)(-+-+-+-+-+=n n n n n n n f δδδδδδ b=[1];a=[8,3.4,1.8,5.6,2.9,0.7]; xh=[1,zeros(1,20)]; h=filter(b,a,xh) figure(1); n=0:20; stem(n,h,) legend('冲激')4)产生幅度A=3,频率f=100,初始相位ϕ=1.2,点数为32 点的正弦序列。

n=0:31;x=3*exp(j*314*n)figure(1)stem(n,x)5)产生幅度A=3,角频率ω=314,点数为32 点的复正弦序列。

离散时间信号与系统实验的matlab实现

离散时间信号与系统实验的matlab实现

离散时间信号与系统[实验目的]1.了解信号处理的基本操作2.熟悉一些常用的序列及其应用[实验原理]我们所接触的信号大多为连续信号,为使之便于处理,往往要对其进行采样,对信号抽样并保证其能完全恢复,对抽样频率有一定的限制。

基本的离散序列的定义如下:1.单位采样序列2.单位阶跃序列3.实指数序列,;a为实数4.复数指数序列,5.正余弦序列,6.周期序列,[实验内容]1.用MATLAB实现函数impseq(n0,n1,n2),使函数实现,。

函数定义:function [x,n]=impseq(n0,n1,n2)if (n1>n2||n0>n2||n0<n1)error('parameter error');end;if (n1<=n2)for n=1:n2-n1+1if (n==n0)x(1,n)=n1-1+n;x(2,n)=1;end;x(1,n)=n1-1+n;x(2,n)=0;end;x(2,n0-n1+1)=1;end;运行结果:impseq(3,1,9)ans =6 7 8 9 10 11 12 13 140 0 0 0 1 0 0 0 0注:上面一行为自变量n,下面一行为函数值,以下运行结果为两行的,都与此题同,不在表明。

2.用MATLAB实现函数stepseq(n0,n1,n2),使函数实现u(n-n0),。

函数定义:function [x,n]=stepseq(n0,n1,n2)if (n0>n2||n0<n1||n1>n2)error('parameter error');end;for n=1:n2-n1+1if (n+n1-1<n0)x(1,n)=n1+n-1;x(2,n)=0;elsex(1,n)=n1+n-1;x(2,n)=1;end;end;运行结果:Stepseq(4,2,10)ans =2 3 4 5 6 7 8 9 100 0 1 1 1 1 1 1 1 注:与上同,上面一行是自变量,下面一行是函数值。

离散时间系统及响应

离散时间系统及响应
2、掌握利用MATLAB求解差分方程和频率响应的方法。
3、利用卷积方法观察分析系统的时域特性。
实验内容:1、时域离散系统和系统响应分析。输入下列程序,观察实验结果,仿照此程序,完成下面问题的编程。
N=16; n=0:N-1; x=sin(2*pi*n/64)+sin(20*pi*n/64);
a=[1 -0.25]; b=[0.5 0.45 0.35];
a=[1 -0.25]; b=[0.5 0.45 0.35]; ;
subplot(221); zplane(b,a);
y=filter(b,a,x);
subplot(222 );stem(n,y) ;
[H,w]=freqz(b,a) ;
PhaseH=angle(H);
Subplot(223);plot(w/pi, PhaseH);
编写程序为:
n=[0:6];k=0:6;M=7;
x=[4,3,2,1,2,3,4];
X=x*(exp(-j*2*pi/M).^(n'*k));
PhaseX=angle(X);
Subplot(221);plot(PhaseX);
MagX=abs(X);
Subplot(222);plot(MagX);
思考题解答
subplot(222 );stem(n,y) ;
[H,w]=freqz(b,a) ;
PhaseH=angle(H);
Subplot(223);plot(w/pi, PhaseH);
Ma24);plot(w/pi,MagH);
求序列的离散时间傅立叶变换,求出其DTFT 。画出 的幅值和相位曲线。
提示:本来是 连续的,但MATLAB中本质均以离散形式处理,因此可以对角度均匀取样后利用循环语句计算DTFT函数值,实现方法:

实验一离散信号与系统时域分析的Matlab实现

实验一离散信号与系统时域分析的Matlab实现

实验1 离散信号与系统时域分析的Matlab实现一、实验目的1.掌握用Matlab表示常用离散信号的方法;2.掌握用Matlab求解离散系统的单位取样响应与零状态响应;3.掌握用Matlab实现离散信号卷积的方法;二、实验原理与内容1. Matlab基本操作打开Matlab 6.5,只保留命令窗口(Command Window),点击文本编辑窗口(M-file)创建、编辑M程序。

图1命令窗口在文本编辑窗口输入指令程序。

当输入完整程序后,点击DEBUG→RUN运行程序,或用键盘F5键直接运行。

另外,也可点击窗口快捷运行程序键。

图2文本编辑窗口编辑完成一个程序后,第一次运行或另存为时,需要保存M程序,保存的路径为命令窗口所示的当前目录路径(Current Directory),该路径可自行设置。

图3当前目录路径注意:M 文件在命名时有一定规则,错误命名时会使M 文件不能正常运行。

(1)M 文件名首字符不能是数字或下划线。

(2)M 文件名不能与Matlab 的内部函数名相同(3)M 文件名中不能有空格,不能含有中文。

一般应采用英文或拼音对M 文件命名。

2.离散信号的Matlab 表示表示离散时间信号x(n)需要两个行向量,一个是表示序号n=[ ],一个是表示相应函数值x=[ ],画图指令是stem 。

(1)正、余弦序列正、余弦序列为MATLAB 内部函数,可直接调用,文件名为sin 和cos 。

例1-1 画出()sin()4x n n π=的波形。

打开文本编辑窗口,输入波形程序:n=0:40;xn=sin(pi*n/4);stem(n,xn,'.')title('sin(pi*n/4)')运行,输出波形如下图4。

图4 ()x n 的波形图对于0cos()n ωϕ+或0sin()n ωϕ+,当2/πω是整数或有理数时,才是周期信号。

练习:(1)把上述程序中第三行分别改为stem(n,xn)、stem(n,xn,'*') 、stem(n,xn,' filled ') 后依次运行,看输出波形有何变化。

离散系统频域分析及matlab实现

离散系统频域分析及matlab实现

离散系统频域分析及matlab实现
离散系统频域分析是对离散系统在频域上的特性进行研究的一种方法,主要包括幅频
特性和相频特性。

频域分析可以通过傅里叶变换、z变换等数学工具进行处理,并通过MATLAB等工具进行模拟实现。

幅频特性是指系统在不同频率下输出信号的幅度随输入信号幅度变化的特性。

幅频特
性通常用幅度响应函数来描述,它表示了系统对输入信号不同频率分量的增益或衰减程度。

以传递函数为基础的离散系统可以通过对其传递函数进行离散化得到差分方程和单位抽样
响应,然后通过对单位抽样响应进行傅里叶变换得到离散系统的频率响应函数。

在MATLAB 中,可以使用freqz函数计算离散系统的频率响应函数,并进一步计算幅度响应函数。

对于复杂的离散系统,可以通过级联、并联和反馈等方法进行分析和设计。

在MATLAB 中,可以使用series、parallel和feedback等函数进行组合模拟。

4.离散时间系统的Matlab实现

4.离散时间系统的Matlab实现
MATLAB数字信号处
• a=[1,0,1/3, 0];
• b=[1/6, 1/2, 1/2, 1/6];
• xi=filtic(b,a,0,0);
• N=32;
• n=0:N-1;
• x1=[n==0];
MATLAB数字信号处
Imaginary Part
1 0.8 0.6 0.4 0.2
0 -0.2 -0.4 -0.6 -0.8
-1 -1
-0.5
0
0.5
Real Part
零点 极点
1 MATLAB数字信号处
filter
• 功能:对数字系统的输入信号进行滤波处 理。因为一个离散系统可以看作是一个滤 波器,系统的输出就是输入经过滤波器滤 波的结果。
– zi=filtic(b , a, y);求x=0,给定输入y时的初始状 态。
– 其中,x和y分别是表示过去的输入和输出。
MATLAB数字信号处
• 【例5】已知一个因果系统的差分方程为 6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)满 足初始条件y(-1)=0,x(-1)=0.求系统的单位冲 激响应和阶跃响应。用filter()函数的 MATLAB程序(取N=32点作图)
离散时间系统的Matlab实现
MATLAB数字信号处
Impz函数
• 功能:求解系统的单位冲击响应 • 调用方式:
– [h,t]=impz(b,a):b、a分别为系统传递函数的分 子和分母的系数向量。返回系统(b,a)的冲激响 应h和相应的时间轴向量t。
– [h,t]=impz(b,a,n):返回n点冲激响应。 – impz(b,a);在当前窗口用stem(t,h )函数出图。

信号与系统实验四 离散时间LTI系统分析实验报告资料

信号与系统实验四  离散时间LTI系统分析实验报告资料

实验四 离散时间LTI 系统分析一、实验目的(一)掌握使用Matlab 进行离散系统时域分析的方法1、学会运用MATLAB 求离散时间系统的零状态响应2、学会运用MATLAB 求解离散时间系统的单位样值响应3、学会运用MATLAB 求解离散时间系统的卷积和(二)掌握使用Matlab 进行离散时间LTI 系统z 域分析的方法1、学会运用MATLAB 求离散时间信号的z 变换和z 反变换2、学会运用MATLAB 分析离散时间系统的系统函数的零极点3、学会运用MATLAB 分析系统函数的零极点分布与其时域特性的关系4、学会运用MATLAB 进行离散时间系统的频率特性分析二、实验条件装有matlab2015a 的计算机一台三、实验内容(一)熟悉两部分相关内容原理 (二)完成作业1、表示某离散LTI 系统的差分方程如下:)()()(.)(.)(12240120-+=---+n x n x n y n y n y其中,)(n x 为激励,)(n y 为响应。

(1)试用MATLAB 命令中的filter 函数求出并画出)(n x 为单位阶跃序列时系统的零状态响应;程序:a=[1 0.2 -0.24];b=[1 1];n=-5:30;x=uDT(n);y=filter(b,a,x);stem(n,y,'fill');xlabel('n');title('x(n)为单位阶跃序列时系统的零状态响应');运行结果:(2)试用MATLAB命令求出并画出系统的单位样值响应[注:分别用filter函数和impz 函数求解,并比较二者结果是否一致];程序:%filter函数a=[1 0.2 -0.24];b=[1 1];n=0:30;x=impDT(n);y=filter(b,a,x);subplot(211);stem(n,y,'fill');xlabel('n');title('filter函数求系统的单位样值响应');%impz函数subplot(212);impz(b,a,30);title('impz 函数求系统的单位样值响应');运行结果:(3)试用MATLAB 命令中的conv 函数求出并画出)(n x 为单位阶跃序列时系统的零状态响应[注:)()(n h n x 和各取前100个样点],并与(1)的结果进行比较; 程序:a=[1 0.2 -0.24]; b=[1 1]; n=-50:50; x1=impDT(n); y1=filter(b,a,x1);nx=-50:50; nh=-50:50;x=double(uDT(nx)); h=double(y1); y=conv(x,h); ny1=nx(1)+nx(1);ny=ny1+(0:(length(nx)+length(nh)-2)); stem(ny,y,'fill');xlabel('n');title('y(n)=x(n)*h(n)'); axis([-5,30,0,2.5]);运行结果:(4)试用MATLAB 命令求出此系统的系统函数)(z H ,并画出相应的零极点分布图,根据零极点图讨论该系统的稳定性; 程序:a=[1 0.2 -0.24]; b=[1 1 0]; zplane(b,a);legend('零点','极点'); title('零极点分布图');运行结果:结论:该因果系统的极点全部在单位圆内,故系统是稳定的。

信号与系统实验(MATLAB 西电版)实验2 常用离散时间

信号与系统实验(MATLAB 西电版)实验2  常用离散时间

实验2 常用离散时间信号的实现 图 2.3 数值法生成的单位阶跃序列
实验2 常用离散时间信号的实现
4) MATLAB
clf; c=-(1/12)+(pi/6)*i; K=2; n=0:40; x=K*exp(c*n); subplot(2,1,1);
实验2 常用离散时间信号的实现
stem(n,real(x)); ylabel(′幅值f(k)′); title(′实部′); subplot(2,1,2); stem(n,imag(x)); xlabel(′时间(k)′); ylabel(′幅值f(k)′); title(′虚部′); 用数值法生成的复指数序列如图2.4
实验2 常用离散时间信号的实现 图 2.6 数值法生成的正弦序列
实验2 常用离散时间信号的实现
7) 单位斜坡序列 MATLAB
clf; k1=-1; k2=20; k0=0; n=[k1:k2]; if k0>=k2 x=zeros(1,length(n)); elseif (k0<k2)&(k0>k1)
实验2 常用离散时间信号的实现 图 2.10 数值法生成的幅值调制序列
实验2 常用离散时间信号的实现
11) MATLAB clf; R=51; d=0.8*(rand(1,R)-0.5); % m=0:R-1; s=2*m.*(0.9.^m); % x=s+d; %
实验2 常用离散时间信号的实现
实验2 常用离散时间信号的实现 图 2.8 数值法生成的随机序列
实验2 常用离散时间信号的实现
9) 扫频正弦序列 MATLAB
n=0:100; a=pi/2/100; b=0; arg=a*n.*n + b*n; x=cos(arg); clf; stem(n,x); axis([0,100,-1.5,1.5]); grid; axis; title(′扫频正弦序列′) xlabel(′k′); ylabel(′f(k)′); 用数值法生成的扫频正弦序列如图2.9

实验一离散时间信号在MATLAB中的表示

实验一离散时间信号在MATLAB中的表示

实验一离散时间信号的表示及运算一、实验目的1、学会运用MATLAB 表示的常用离散时间信号;2、学会运用MATLAB 实现离散时间信号的基本运算。

二、实验原理及实例分析2.1 离散时间信号在MATLAB中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。

离散序列通常用x(n)来表示,自变量n 必须是整数。

离散时间信号的波形绘制在MA TLAB 中一般用stem( )函数(注释:stem中文意思是茎、干、柄)。

stem( )函数的基本用法和plot( )函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。

如果要实心,需使用参数“ fill ”、“ filled ”,或者参数“ .”。

由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。

类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。

0、判断n 是否为整数function y = isInt(n)y = (n==fix(n)); % fix(n) 为取整运算end1、单位取样序列单位取样序列(n) ,也称为单位冲激序列,定义为1 (n 0)1)0 (n 0)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0 处是取确定的值1。

在MA TLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即function y=impDT(n)y=(n==0); %当参数n 为0 时冲激为1,否则为0end调用该函数时n 必须为整数或整数向量。

【实例1】利用MA TLAB 的impDT 函数绘出单位冲激序列的波形图。

解:MATLAB 源程序为>>n=-3:3; % n=[-3,-2,-1,0,1,2,3]>>x=impDT(n);>>stem(n,x,'fill'), xlabel('n'), grid on>>title(' 单位冲激序列')>>axis([-3 3 -0.1 1.1])程序运行结果如图 1 所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB数字信号处理
freqz
• 功能:用于求离散时间系统的频率响应函 数。 • 调用格式: • 1)[h, w]=freqz(b ,a ,n)。可以得到数字滤波 器的n点复频响应值,这n个点均匀地分布 之[0, pi ]上,并将这n个频点的频率记录在w 中,相应的频响值记录在h中,n缺省时取 512点。
MATLAB数字信号处理
• 【例6】已知离散时间系统的系统函数
0.2 0.1z 0.3z 0.1z 0.2 z H ( z) 1 1.1z 1 1.5 z 2 0.7 z 3 0.3z 4
1
2
3
4
• 求系统在0-pi 频率范围内,归一化的绝对幅 度频率响应,相对幅度频率响应,相位频 率响应和零极点分部图。
• •
a0=1, a1=0, a2=1/3, a3=0 b0=1/6, b1=1/2, b2=1/2, b3=1/6
MATLAB数字信号处理
用impz()函数的MATLAB程序(取 N=32点作图)
• • • • • • a=[1,0,1/3, 0]; b=[1/6, 1/2, 1/2, 1/6]; N=32; n=0:N-1; hn=impz(b,a,n); gn=dstep(b,a,n);
MATLAB数字信号处理
• • • • • • • • • • •
a=[1,0,1/3, 0]; b=[1/6, 1/2, 1/2, 1/6]; xi=filtic(b,a,0,0); N=32; n=0:N-1; x1=[n==0]; %单位冲激信号 hn=filter(b,a,x1,xi); subplot(1,2,1),stem(n,hn,’filled’); title(‘系统的单位冲激响应’); ylabel(‘h(n)’);xlabel(‘n’); axis([0,N-1,-1.1*min(hn),1.1*max(hn)]);
• [y , zf]=filter(b , a, x);除得到结果矢量y外, 还得到x 的最终状态矢量zf。 • y=filter(b , a, x, zi);可在zi中指定x的初始 状态。
MATLAB数字信号处理
• • • • •
【例4】计算低通滤波器的冲激响应。 x=[1 zeros(1,100)]; [b,a] = cheby1(11,1,.4); y=filter(b,a,x); stem(y);
MATLAB数字信号处理
• 【例2】已知一个因果系统的差分方程为 6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)满 足初始条件y(-1)=0,x(-1)=0.求系统的单位冲 激响应和阶跃响应。
– 解:将上述方程对y(n)项系数进行归一化,得 到其系统函数分子和分母系数
0.2
0.1
0
-0.1
-0.2
0
5
10
15
20 25 30 n (samples)
35
40
45
MATLAB数字信号处理
dstep
• 功能:求解数字系统的阶跃响应。 • 调用格式:
– [h,t]=dstep(b,a);求解数字系统的阶跃响应h,取 样点数为缺省值。 – [h,t]=dstep(b,a,n);求解数字系统的阶跃响应h, 取样点数为n值。 – dstep(b,a);在当前窗口用stairs(t,h)函数出图。
MATLAB数字信号处理
• b=[0.2, 0.1, 0.3, 0.1, 0.2]; • a=[1, -1.1, 1.5, -0.7, 0.3]; • n=(0: 500)*pi/500; %在[0,pi]的范围内取 501个采样点 • [h, w]=freqz(b, a, n); %求系统的频率响应 • subplot(2, 2, 1), plot(n/pi, abs(h)); grid %作 系统的绝对幅度频响图 • axis([0,1,1.1*min(abs(h)), 1.1*max(abs(h))]); • ylabel('幅度'); • title('幅频响应(V)');
– 调用格式:y=filter(b , a, x),对于由矢量b, a决 定的数字系统(b和a分别表示系统函数H(z) 对应的分子项和分母项系数构成的数组,而且 分母系数要归一化处理。)当输入信号为x时, 对x中的数据进行滤波,结果存于y中,长度取 max(na , nb).
MATLAB数字信号处理
MATLAB数字信号处理
• • • • • • • •
subplot(1,2,1),stem(n,hn,’filled’); title(‘系统的单位冲击响应’); ylabel(‘h(n)’);xlabel(‘n’); axis([0,N-1,-1.1*min(hn),1.1*max(hn)]); subplot(1,2,2), stem(n,gn,’k’); title(‘系统的单位阶跃响应’); ylabel(‘g(n)’);xlabel(‘n’); axis([0,N-1,-1.1*min(gn),1.1*max(gn)]);
MATLAB数字信号处理
• 2)[h f]=freqz(b, a, n, Fs);用于对H(jw) 在[0, Fs/2]上等间隔采样n点,采样点频率及相应 频响值分别记录在f和h中,由用户指定Fs( 以Hz为单位)的值。 • 3)h=freqz(b, a, w);用于对H(jw) 在[0, 2*pi ] 上进行采样,采样频率点由矢量w指定。 • 4)h=freqz(b, a, f, Fs);用于对H(jw)在[0, Fs] 上采样,采样频率点由矢量f指定。
MATLAB数字信号处理
0.3 0.25 0.2 0.15 0.1 0.05 0 -0.05 -0.1 -0.15 -0.2
0
20
40
60
80
100
120
MATLAB数字信号处理
filtic子函数
• 功能:为filter子函数选择初始条件。 • 调用格式:
– zi=filtic(b ,a ,y ,x);求给定输入x和y时的初始状 态。 – zi=filtic(b , a, y);求x=0,给定输入y时的初始状 态。 – 其中,x和y分别是表示过去的输入和输出。
MATLAB数字信号处理
• • • • • •
x2=[n>=0]; %单位阶跃信号 gn=filter(b,a,x2,xi); subplot(1,2,2), stem(n,gn,’k’); title(‘系统的单位阶跃响应’); ylabel(‘g(n)’);xlabel(‘n’); axis([0,N-1,-1.1*min(gn),1.1*max(gn)]);
MATLAB数字信号处理
• 【例5】已知一个因果系统的差分方程为 6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)满 足初始条件y(-1)=0,x(-1)=0.求系统的单位冲 激响应和阶跃响应。用filter()函数的MATLAB 程序(取N=32点作图)
MATLAB数字信号处理
MATLAB数字信号处理
• • • • •
【例3】计算线性系统(b,a)的零点和极点。 b=[0.2 0.1 0.3 0.1 0.15]; a=[1 -1.1 1.45 -0.6 0.3]; zplane(b,a); legend('零点','极点');
MATLAB数字信号处理
1 0.8 0.6 0.4
离散时间系统的Matlab实现
MATLAB数字信号处理
Impzபைடு நூலகம்数
• 功能:求解系统的单位冲击响应 • 调用方式:
– [h,t]=impz(b,a):b、a分别为系统传递函数的分 子和分母的系数向量。返回系统(b,a)的冲激响 应h和相应的时间轴向量t。 – [h,t]=impz(b,a,n):返回n点冲激响应。 – impz(b,a);在当前窗口用stem(t,h )函数出图。
MATLAB数字信号处理
• subplot(2,2, 2), plot(n/pi, angle(h)); grid %作系统的相位 频响图 • axis([0,1,1.1*min(angle(h)),1.1*max(angle(h))]); • ylabel('相位');xlabel('以pi为单位的频率'); • title('相频响应'); • db=20*log10(abs(h)); • subplot(2, 2, 3), plot(n/pi, db); grid %作系统的相对幅度 频响图 • title('幅频响应(db)'); • subplot(2, 2, 4), zplane(b, a); grid %作零极点分布图 • title('零极点分布');
MATLAB数字信号处理
系统的单位冲击响应 0.5 0.4 0.3 0.2 0 5 10 15 20 n 系统的单位阶跃响应 25 30
h(n) g(n)
1
0.5
0 0 5 10 15 n 20 25 30
MATLAB数字信号处理
zplane
• zplane(z,p):绘制系统零极点图,“o”表示 零点,“x”表示极点。z,p分别为零点和极 点向量。 • zplane(b,a):b、a分别为系统传递函数的分 子和分母系数向量。
MATLAB数字信号处理
幅 频 响 应 ( V) 1 0.8
幅度 相位
相频响应
2 0 -2 0 0.5 幅 频 响 应 ( db) 1 0 0.5 以 pi为 单 位 的 频 率 零极点分布 1
0.6 0.4 0.2
相关文档
最新文档