当前位置: 首页 > news >正文

MATLAB 笔记,关于Filter函数的功能和使用,求simple(冲激)和unit step(阶跃)响应...

MATLAB 笔记,关于Filter函数的功能和使用,求simple(冲激)和unit step(阶跃)响应
在MATLAB中,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以用函数 y=conv(x,h)计算卷积,用y=impz(p,d,N)求系统的冲激响应。
实现差分方程
先从简单的说起:
filter([1,2],1,[1,2,3,4,5])
实现 y[k]=x[k]+2*x[k-1]
y[1]=x[1]+2*0=1%(x[1]之前状态都用0)
y[2]=x[2]+2*x[1]=2+2*1=4


a. 下面程序是用来实现h和x的卷积的,分别用了filter和conv函数,两者函数得出的结果一样。

h = [3 2 1 -2 1 0 -4 0 3]; % impulse response
x = [1 -2 3 -4 3 2 1]; % input sequence
y = conv(h,x);
n = 0:14;
subplot(2,1,1);
stem(n,y);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Obtained by Convolution'); grid;
x1 = [x zeros(1,8)];
y1 = filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('Time index n'); ylabel('Amplitude');
title('Output Generated by Filtering'); grid;
要实现下式的冲击响应和阶跃响应,可以分别采用三种方法。
y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]。

b. 单位冲激响应:

(1)用filter函数 
a1=[1,0.75,0.125];
b1=[1,-1];
n=0:20;
x1=[1 zeros(1,20)];
y1filter=filter(b1,a1,x1);
stem(n,y1filter);
title('y1filter');
xlabel('x');
ylabel('y'); 

(2)用conv函数 

a1=[1,0.75,0.125];
b1=[1,-1];
x1=[1 zeros(1,10)];
[h]=impz(b1,a1,10);
y1conv=conv(h,x1);
n=0:19;
stem(n,y1conv,'filled')

(3)用impz函数

a1=[1,0.75,0.125];
b1=[1,-1];
impz(b1,a1,21);

c. 单位阶跃响应:

(1)用filter函数
a1=[1,0.75,0.125];
b1=[1,-1];
n=0:20;
x2=ones(1,21);
y1filter=filter(b1,a1,x2);
stem(n,y1filter);
title('y1filter_step');
xlabel('x');
ylabel('y');

(2)用conv函数

a1=[1,0.75,0.125];
b1=[1,-1];
x2=ones(1,21);
[h]=impz(b1,a1,20);
y1=conv(h,x2);
y1conv=y1(1:21); %为何y1conv要取y1中1:21的值,解释见
n1=0:20; %y2à单位阶跃响应à用conv函数中注释
stem(n1,y1conv,'filled');
title('y1conv');
xlabel('n');
ylabel('y1[n]');

(3)用impz函数

a=[1,0.75,0.125];
b=1;
impz(b,a)

即y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列。输出结果长度数等于x的长度。

而y=conv(x,h)是用来实现卷级的,对x序列和h序列进行卷积,输出的结果个数等于x的长度与h的长度之和减去1。

y=impz(p,d,N)是用来实现冲击响应的,d和p的定义见filter,N表示冲击响应输出的序列个数
posted on 2013-01-20 23:27 sonictl 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sonictl/archive/2013/01/20/6735640.html

相关文章:

  • pku3273 Monthly Expense
  • 【ZOJ月赛】【树形DP】【I.Destroy】
  • 概要设计与详细设计的区别
  • templates of angularjs
  • wp7的数据库并发异常
  • Jquery验证输入框只能输入数字
  • 一些视频教程网站推荐
  • 利用最新的开源软件构建日志管理系统
  • Ubuntu 恢复 ctrl+f
  • 程序员,你懂的.
  • HDOJ 1133 Buy the Ticket 简单解题报告
  • java反射学习总结
  • Serial Flash
  • Visio画UML用例图没有include关系的解决方法
  • Chromium之cef3的.net封装(定制化的浏览器)
  • [译]CSS 居中(Center)方法大合集
  • React Transition Group -- Transition 组件
  • Vue2 SSR 的优化之旅
  • 读懂package.json -- 依赖管理
  • 浮动相关
  • 复杂数据处理
  • 来,膜拜下android roadmap,强大的执行力
  • 如何学习JavaEE,项目又该如何做?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 收藏好这篇,别再只说“数据劫持”了
  • 推荐一个React的管理后台框架
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 移动端解决方案学习记录
  • 2017年360最后一道编程题
  • Spring第一个helloWorld
  • $.ajax()参数及用法
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (NSDate) 时间 (time )比较
  • (待修改)PyG安装步骤
  • (二)PySpark3:SparkSQL编程
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET 中的轻量级线程安全
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .Net6使用WebSocket与前端进行通信
  • .net对接阿里云CSB服务
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET中winform传递参数至Url并获得返回值或文件
  • .sdf和.msp文件读取
  • /var/spool/postfix/maildrop 下有大量文件
  • @Autowired @Resource @Qualifier的区别
  • @RequestBody详解:用于获取请求体中的Json格式参数