MATLAB信号与系统分析(四)——离散信号与系统的复频域分析及MATLAB实现

一、系统的z变换和反变换

1、利用部分分式展开求解逆Z变换:

2、例子

3、Z变换的MATLAB函数

clear all
f=sym(‘cos(a*k)‘);
F=ztrans(f)
F=sym(‘z^2/((1+z)*(z-2))‘);
f=iztrans(F)

二、系统的零极点分布及其稳定性

%求H(z)=(z^3+2z)/(z^4+3(z^3)+2(z^2)+2z+1)的零极点及其分布图
%求H(z)=(1+z^(-1))/(1+z^-1/2+z^-2/4+1)的零极点及其分布图
%采用roots和plot函数
clear all
%(1)
b=[1,0,2,0];
a=[1,3,2,2,1];
zs1=roots(b);
ps1=roots(a);
figure(1)
subplot(2,1,1);plot(real(zs1),imag(zs1),‘o‘,real(ps1),imag(ps1),‘kx‘,‘markersize‘,12);
axis([-2,2,-2,2]);grid on;
legend(‘零点‘,‘极点‘)
%(2)
c=[1,1,0];
d=[1,1/2,1/4];
zs2=roots(c);
ps2=roots(d);
subplot(2,1,2);
plot(real(zs2),imag(zs2),‘o‘,real(ps2),imag(ps2),‘kx‘,‘markersize‘,12);
axis([-2,2,-2,2]);grid on;legend(‘零点‘,‘极点‘)

%采用tf2zp和zplane函数
%(1)
b=[1,0,2,0];
a=[1,3,2,2,1];
figure(2)
[z,p]=tf2zp(b,a)
subplot(2,1,1),zplane(z,p)
%(2)
c=[1,1,0];
d=[1,1/2,1/4];
[z,p]=tf2zp(c,d)
subplot(2,1,2),zplane(z,p)

三、系统的零极点分布与系统冲激响应时域特性

clear all
a=[1 -2*0.8*cos(pi/4) 0.8^2];
b=[1];
[z,p,k]=tf2zp(b,a);
figure(1)
subplot(2,1,1),zplane(z,p);
subplot(2,1,2),impz(b,a,20)

四、离散系统的频率响应

MATLAB提供了专门对离散系统频率响应H(jw)进行分析的函数freqz(),该函数可以求出系统频率响应的数值解,并可绘出系统的幅频和相频响应曲线。

[H,w]=freqz(b,a,N)

[H,w]=freqz(b,a,N,’whole’)

freqz(b,a,N)

freqz(b,a,N,’whole’)

%例7
clear all;
b=[5/4 -5/4];
a=[1 -1/4];
[h,w]=freqz(b,a,400,‘whole‘);
hf=abs(h);
hx=angle(h);
figure(1),clf;
subplot(2,1,1),plot(w,hf),title(‘幅频特性曲线‘),grid on;
subplot(2,1,2),plot(w,hx),title(‘相频特性曲线‘),grid on;
figure(2)
freqz(b,a,‘whole‘)
%
[z,p]=tf2zp(b,a);
r=2;
k=200;
w=0:1*pi/k:r*pi;
y=exp(i*w);                        %定义单位圆上的k个频率等分点
N=length(p);                    %求极点个数
M=length(z);                    %求零点个数
yp=ones(N,1)*y;                    %定义行数为极点个数的单位圆向量
yz=ones(M,1)*y;                    %定义行数为零点个数的单位圆向量
vp=yp-p*ones(1,r*k+1);            %定义极点到单位圆上各点的向量
vz=yz-z*ones(1,r*k+1);            %定义零点到单位圆上各点的向量
Ai=abs(vp);                        %求出极点到单位圆上各点的向量的模
Bj=abs(vz);                        %求出零点到单位圆上各点的向量的模
Ci=angle(vp);                    %求出极点到单位圆上各点的向量的相角
Dj=angle(vz);                    %求出零点到单位圆上各点的向量的相角
fai=sum(Dj,1)-sum(Ci,1);        %求系统相频响应
H=prod(Bj,1)./prod(Ai,1);        %求系统幅频响应
figure(3)
subplot(2,1,1),plot(w,H);title(‘离散系统幅频特性曲线‘),xlabel(‘角频率‘),ylabel(‘幅度‘)
subplot(2,1,2),plot(w,fai);title(‘离散系统的相频特性曲线‘),xlabel(‘角频率‘),ylabel(‘相位‘)
时间: 2024-10-14 00:46:56

MATLAB信号与系统分析(四)——离散信号与系统的复频域分析及MATLAB实现的相关文章

MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析

一.离散信号的表示 1.一个离散信号需要用两个向量来表示: (1)离散信号的幅值 (2)离散信号的位置信息 2.用MATLAB实现离散信号的可视化 (1)不能利用符号运算来表示 (2)绘制离散信号一般采用stem命令. (3)x(n)--stem(n,x) 3.一个demo: clear all; x=[-1,2,3,3,5,-4]; n=[-2,-1,0,1,2,3]; figure(1) stem(n,x),axis([-2.5,3.5,-4.5,5.5]) 二.一些常用的离散信号 1.单位

MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析

一.连续时间信号的表示: 1.向量表示法: 在MATLAB中,是用连续信号在等时间间隔点的样值来近似表示连续信号,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号. 对于连续时间信号f(t),一般是用两个行向量f和t来表示.t=t1:p:t2 ,t1 表示的是信号的起始时间,t2为终止时间,p为时间的间隔.而f为连续时间f(t)在向量t所定义的时间范围内对应的样值. 2.符号运算表示法: 使用sym定义变量,然后进行表示. Eg:分别采用上述两种方法画出抽样信号: clear al

MATLAB产生离散信号

Matlab产生离散信号 常见离散信号 冲击信号 n = -5:5; x = n == 0;% 当n为0时,x的值为1 stem(n, x, 'filled'); axis([-5 5 0 1.1*max(x)]);%规定坐标轴的范围 xlabel('时间(n)');ylabel('幅度(n)'); 冲击信号 阶跃信号 n = -2:8; x = n >= 0; % 当n大于等与零时,其值为1 stem(n, x, 'filled'); axis([-4, 4, 0, 1.1*max(x)]);

我的QT5学习之路(四)——信号槽

一.前言 前面说了Qt最基本的实例创建.控件以及工具集的介绍,相当于对于Qt有了一个初次的认识,这次我们开始认识Qt信号通信的重点之一——信号槽. 二.信号槽 信号槽是 Qt 框架引以为豪的机制之一.熟练使用和理解信号槽,能够设计出解耦的非常漂亮的程序,有利于增强我们的技术设计能力. 所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal).这种发出是没有目的的,类似广播.如果有对象对这个信号感兴趣,它就会使用连接(connect)

MATLAB仿真中连续和离散的控制器有何区别?

matlab系统同时提供连续和离散的控制器和对象的目的是:在降低用户使用复杂程度的同时提高仿真精度.仿真速度和应用的广泛性. 仿真步长和求解精度的概念对于理解这个问题至关重要. 首先是步长,步长和求解精度存在一对矛盾,步长的选择是仿真消耗的时间和求解精度要求的折中.计算机只能一步一步计算你的电路或者其他方程,例如你输入一个连续的信号,计算机在一个时刻仅仅会采集这个信号上的一个点,然后把这个点带入你的控制器数学方程中,求出电路方程的一个解,根据这个解得到系统的输出.因此,仿真波形其实是一个个的点聚

[学习笔记]信号基本概念(中断和信号)/名称及常用信号/信号处理/signal函数实践

1基本概念 中断 q  中断是系统对于异步事件的响应 q  中断信号 q  中断源 q  现场信息 q  中断处理程序 q  中断向量表 异步事件的响应:进程执行代码的过程中可以随时被打断,然后去执行异常处理程序 生活中的中断和计算机系统中的中断 1)  无中断生活场景 张三看书,厨房烧水 2)有中断的生活场景 张三看书,设置闹钟,厨房烧水. 闹钟发出中断信号,张三把书合好(第20页),去厨房把开水事情处理好,张三重新打开20页进行阅读. 3)计算机系统的中断场景 中断源发出中断信号,CPU判断

APUE学习笔记——10.11~10.13 信号集、信号屏蔽字、未决信号

如有转载,请注明出处:Windeal专栏 首先简述下几个概念的关系: 我们通过信号集建立信号屏蔽字,使得信号发生阻塞,被阻塞的信号即未决信号. 信号集: 信号集:其实就是一系列的信号.用sigset_t set表示. 数据类型:sigset_t 类似于整型(位数可能超过整型,因而不能用整型表示). 我们一般在sigprocmask()等函数中使用信号集,用于创建一系列进程要阻塞的信号,告诉内核不允许这些信号发生. 几个关于信号集的函数: #include <signal.h> int sige

QT开发(十四)——QT绘图系统

QT开发(十四)--QT绘图系统 一.QT绘图原理 Qt4中的2D绘图系统称为Arthur绘图系统,可以使用相同的API在屏幕上和绘图设备上进行绘制,主要基于QPainter.QPainterDevice和 QPainterEngine.QPainter执行绘图操作,QPainterDevice提供绘图设备,是一个二维空间的抽象,QPainterEngine提供一些接口.QPainter用来执行具体的绘图相关操作,如画点,画线,填充,变换,alpha通道等.QPaintDevice类是能够进行绘

MATLAB信号与系统分析(五)&mdash;&mdash;连续时间信号的频谱分析

一.实验目的: 1.掌握傅立叶级数(FS),学会分析连续时间周期信号的频谱分析及MATLAB实现: 2.掌握傅立叶变换(FT),了解傅立叶变换的性质以及MATLAB实现. 二.利用符号运算求傅里叶级数的系数 1.复习几个函数: F1=int(f,v,a,b) - 对f表达式的v变量在(a,b)区间求定积分 F2=subs(s,OLD,NEW)-用新变量NEW代替S中的指定变量OLD. F3=vpa(x,n) : 显示可变精度计算:x为符号变量,n表示要精确计算的位数. 2.周期函数的傅里叶级数的