MATLAB 提供了函数filter,可以实现差分方程的递规求解。

设差分方程的形式为\(a_0y(n) + a_1y(n-1) + \cdots + a_my(n-m)=b_0x(n)+b_1x(n-1)+\cdots+b_sx(n-s)\)

基本的调用方法

yn = filter(B, A, xn)

  • \(B = [b_0, \cdots, b_s], A = [a_0, \cdots, a_m]\);
  • xn是输入信号;
  • yn是输入信号通过系统的零状态响应。

    如果输入是单位脉冲函数,则输出就是系统单位脉冲响应。

yn = filter(B, A, xn, xi)

  • 前3个参数的用法同上。
  • xi是等效初始条件序列,一般是通过调用函数filtic得到的。
  • yi是由系统初始状态引起的零输入相应和输入信号引起的零状态相应之和,即全响应。

xi = filtic(B, A, ys, xs)

  • 参数B,A的用法如上
  • ysxs表示的输入和输出在\(n_0\)时刻之前的初始条件:\(ys =[y(-1),y(-2),\cdots, y(-N)]\),\(xs=[x(-1),x(-2),\cdots, x(-N)]\)。如果系统是因果系统,显然输入为0,即xs = 0,此时可以省略xs

例子

  1. 求系统的单位脉冲响应和零输入相应
% 滑动平均滤波器的差分方程如下
% y(n) = 1/5 * (x(n) + x(n-1) + x(n-2) + x(n-3) + x(n-4))
windowSize = 5;
B = ones(1, windowSize) / windowSize;
A = 1; % 求该系统的单位脉冲响应
subplot(411)
delta = [1, zeros(1,33)]; % 单位脉冲信号
y0 = filter(B, A, delta);
stem(0:length(y0)-1, y0)
title('单位脉冲响应') % 求系统在某个输入信号下的零状态响应
% 输入信号
subplot(412)
xn = [ones(1, 32), zeros(1,4)];
xn(13)=2; xn(16)=0.5;xn(20)=1.5;
stem(0:length(xn)-1, xn);
title('输入信号') % 零状态相应
subplot(413)
yn = filter(B, A, xn, xi);
stem(0:length(yn)-1, yn);
title('零状态相应输出') % 卷积验证
subplot(414)
yc = conv(xn, y0)
stem(0:length(yc)-1, yc)
title('卷积验证')
xlim([0, 35])

运行结果:

  1. 求系统的全响应
% 设因果系统 y(n) = 0.8*y(n-1) + x(n),输入为x(n)=\delta(n)
% 在不同初始条件下的输出:(1)y(-1)=0; (2) y(-1)=1
A = [1, -0.8];
B = 1;
xn = [1, zeros(1, 30)]; % y(-1)=0, 输出即是零状态输入
subplot(211)
y0 = filter(B, A, xn);
stem(0:length(y0)-1, y0)
title('初始状态为y(-1)=0')
ylim([0, 2]) % y(-1)=1
subplot(212)
ys = 1; % 初始状态
xi = filtic(B, A, ys);
yn = filter(B, A, xn, xi);
stem(0:length(yn)-1, yn);
title('初始状态为y(-1)=1')
ylim([0, 2])

运行结果

Matlab 使用filter求解系统响应的更多相关文章

  1. 采用sqlserver的缺省配置,在生产环境经常碰到系统响应慢(甚至hung的情况)

    请重视并正确配置sqlserver实例及数据库的参数,一般化的配置推荐如下: 1.数据和日志文件的初始大小分别设置为10G和2G,均设置为按照固定200M大小增长,不限制最大值: 2.sever实例设 ...

  2. Matlab随笔之求解线性方程

    原文:Matlab随笔之求解线性方程 理论知识补充: %矩阵除分为矩阵右除和矩阵左除. %矩阵右除的运算符号为“/”,设A,B为两个矩阵,则“A/B”是指方程X*B=A的解矩阵X. %矩阵A和B的列数 ...

  3. C++和MATLAB混合编程求解多项式系数(矩阵相除)

    摘要:MATLAB对于矩阵处理是非常高效的,而C++对于矩阵操作是非常麻烦的,因而可以采用C++与MATLAB混合编程求解矩阵问题. 主要思路就是,在MATLAB中编写函数脚本并使用C++编译为dll ...

  4. Springboot 之 Filter 实现超大响应 JSON 数据压缩

    简介 项目中,请求时发送超大 json 数据外:响应时也有可能返回超大 json数据.上一篇实现了请求数据的 gzip 压缩.本篇通过 filter 实现对响应 json 数据的压缩. 先了解一下以下 ...

  5. 基于Matlab的多自由度系统固有频率及振型计算

    可参考文涛,基于Matlab语言的多自由度振动系统的固有频率及主振型计算分析,2007 对于无阻尼系统 [VEC,VAL]=eig(inv(A)*K) 对于有阻尼系统,参考振动论坛计算程序 输入M,D ...

  6. JSP Filter,GZIP压缩响应流

    url:http://hi.baidu.com/xhftx/blog/item/fbc11d3012648711ebc4af59.html 关键词:JSP,Filter,Servlet,GZIP 现在 ...

  7. matlab学习之求解函数的根和极小值

    只是用来求解函数的部分一个根,具体算法没查询,只是调用自带的函数 代码如下 % 求函数零点和极小值 xiszero=func(0) x=-1:0.1:1.5; y=func(x); plot(x,y) ...

  8. MATLAB quadprog函数求解二次规划问题

                     [例]求如下二次规划问题. [分析]首先应该把目标函数表示成如下矩阵形式: 这里要细说一下如何写成矩阵形式. 首先,向量x是很容易写出的,因为f(x)包含两个变量x1 ...

  9. MATLAB 利用filter函数实现滑动平均滤波

      function [ y ] = moving_average( x, win_size ) y1=filter(ones(1,win_size/2+1)/win_size,1,x); y2=fi ...

随机推荐

  1. python之字典(dict)基础篇

    字典:dict 特点: 1>,可变容器模型,且可存储任意类型对象,字符串,列表,元组,集合均可: 2>,以key-value形式存在,每个键值 用冒号 : 分割,每个键值对之间用逗号 , ...

  2. AcWing 1250. 格子游戏

    #include<bits/stdc++.h> using namespace std; int n,m; int fa[1000000]; int found(int x) { if(f ...

  3. 1.3.7、通过QueryParam匹配

    server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...

  4. 1.3.5、通过Method匹配

    server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...

  5. Jquery Validate动态添加和删除校验规则

    以下面文本框为例, <input type="text"name="username" id="username"/> 我们要让 ...

  6. WPF教程九:理解WPF中的对象资源

    在WPF中,所有继承自FrameworkElement的元素都包含一个Resources属性,这个属性就是我们这篇要讲的资源. 这一篇讲解的资源是不是上一篇的程序集资源(那个是在编译过程中打包到程序集 ...

  7. Spring学习总结(一)---谈谈对Spring IOC的理解(一:理论知识理解)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  8. Dapper的基本使用 [转]

    Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.也就是说实体类都要自己写.它没有复杂的配置文件,一个单文件就可 ...

  9. 深度解析CSS中的单位以及区别

    css中有几个不同的单位表示长度,使用时数字加单位.如果长度为0,则可以省略单位. 长度单位可分为两种类型:相对和绝对. 绝对长度 绝对长度单位是一个固定的值,反应真实的物理尺寸,不依赖于显示器.分辨 ...

  10. 【保姆级】利用Github搭建自己的个人博客,看完就会

    大家好,我是辰哥~ 作为一名喜欢技术的爱好者,平时喜欢把自己学习技术的心得或者一些踩坑.易错的过程记录下来,首选的是技术平台(博客),今天辰哥来教大家如何利用Github来搭建一个自己的个人博客平台. ...