MATLAB仿真中连续和离散的控制器有何区别?
仿真步长和求解精度的概念对于理解这个问题至关重要。
首先是步长,步长和求解精度存在一对矛盾,步长的选择是仿真消耗的时间和求解精度要求的折中。计算机只能一步一步计算你的电路或者其他方程,例如你输入一个连续的信号,计算机在一个时刻仅仅会采集这个信号上的一个点,然后把这个点带入你的控制器数学方程中,求出电路方程的一个解,根据这个解得到系统的输出。因此,仿真波形其实是一个个的点聚集在一起形成的,并非所见的一条曲线。很显然,一个个离散的点之间的间隔越小,出来的波形就越漂亮,你仿真所得到的误差就会越小。如果步长无穷接近0
,那么仿真结果就无穷接近于物理系统。为何不能让计算机系统的步长无穷接近0
呢?如果这样的话,计算机系统的计算量太大,导致仿真消耗的时间会太长。实际仿真中步长的选择需要结合仿真所消耗的时间和仿真精度要求两者之间的关系,在消耗的时间和精度之间进行折中。
其次是求解精度,精度不仅受到仿真步长的影响,而且系统的离散化方法和求解结束后通过离散的点得到连续曲线的插值算法也会影响求解精度。目前有多离散化方法,不同的离散化方法所得到的结果精度不同,不同的离散化方法都有一个“特征采样时间”可以使得自己在这个采样时间下精度最好。因此,离散化方法离散结束后不仅仅得到一个离散系统,还会有一个最佳仿真步长。
上述为步长和精度的概念以及两者之间的关系,接下来分析MATLAB提供连续和离散两种输入方式的目的。
MATLAB提供连续系统的控制器和控制对象输入是为了:便于用户方便快捷使用仿真软件。对于一个小白,他并不懂得上述步长、离散方法、求解精度的概念,但又想得到一个较好的仿真结果怎么办?MATLAB提供这种方式,你只需要输入一个连续传递函数,matlab会根据连续系统的特性使用内部自带的离散化方法对你的系统离散化,并自动设置一个仿真步长,你需要完成的就是等待,这样降低了用户的使用门槛儿和难度。对于一个懂得理论的人,他也有可能不想自己耗费时间和精力去进行系统的离散化,这样的“自动化”使得软件用起来更加方便。
MATLAB提供离散的控制器和控制对象输入是为了追求更高的仿真精度,为用户提供更加广泛的选择。有些精度要求很高的系统,其仿真步长由其他因素决定,必须选择固定的或一段范围的步长。这种情况下系统自己的离散化方法以及自己计算的步长并不适合仿真,两者同时或者有其一必须由用户指定。为了在这种苛刻条件下依旧可以使用仿真软件,用户需要根据自己的要求对系统自行离散化,得到离散系统和对应的采样时间,自己输入到软件中,从而得到相应精度要求下的仿真结果。离散的控制器和对象的输入方法在在这种情况下拓宽了软件的适用范围,为用户提供了更加自由的选择空间。
因此,你所问的问题中,四种控制之间的区别在于仿真精度和消耗的时间。因为软件现在很强大,所以,若想要看到四种控制之间的差异,需要找到一个精度要求很高,而且极易不稳定的系统才能看出差别在哪里。对于一般的应用,四种方法可以任选其一。
此文也在我的知乎文章中发表。
MATLAB仿真中连续和离散的控制器有何区别?的更多相关文章
- OFDM通信系统的MATLAB仿真(1)
由于是第一篇博客,想先说点废话,其实自己早就想把学到的一些东西总结成文章随笔之类的供自己复习时查看的了.但是一是觉得自己学的的不够深入,总结也写不出什么很深刻的东西:二是觉得网上也有海量的资料了,需要 ...
- OFDM通信系统的MATLAB仿真(2)
关于OFDM系统的MATLAB仿真实现的第二篇随笔,在第一篇中,我们讨论的是信号经过AWGN信道的情况,只用添加固定噪声功率的高斯白噪声就好了.但在实际无线信道中,信道干扰常常是加性噪声.多径衰落的结 ...
- 经典功率谱估计及Matlab仿真
原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...
- (转) 经典功率谱估计及Matlab仿真
原文出自:http://www.cnblogs.com/jacklu/p/5140913.html 功率谱估计在分析平稳各态遍历随机信号频率成分领域被广泛使用,并且已被成功应用到雷达信号处理.故障诊断 ...
- 使用axes函数在matlab绘图中实现图中图的绘制
使用axes函数在matlab绘图中实现图中图的绘制 有时为了对细节进行详细说明,需要在一个较大坐标轴上绘制一个小图来对局部进行放大以阐述结果. 这可以通过调用axes函数实现. 下面通过绘制 y=1 ...
- MATLAB仿真总结
MATLAB仿真过程中,编写MATLAB代码的时候犯了很多错误,做了很多蠢事.记录下自己犯错的点点滴滴,并引以为戒.使用MATLAB版本为2014a,以下内容如有不当还请指正. 1. 仿真开始前清理工 ...
- 极化码的matlab仿真(1)——参数设置
根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...
- C# if中连续几个条件判断
C# if中连续几个条件判断 1.if (条件表达式1 && 条件表达式2) 当条件表达式1为true时 using System; using System.Collections. ...
- 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)
http://www.matlabsky.com/thread-43937-1-1.html <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下) ...
随机推荐
- Java工程中使用Mybatis (工程结合Mybatis,数据可以结合Swing使用)
2011年6月iBatis 更名为 MyBatis,从 iBatis 到 MyBatis,不只是名称上的变化,MyBatis 提供了更为强大的功能,同时并没有损失其易用性,相反,在很多地方都借助于 J ...
- CSS绘制简单图形
究竟该用字体图标.图片图标.还是CSS画一个图标?我也不知道.各有千秋吧.本文将介绍如何用css绘制简单的图形,所有测试在chrome58.0完成,如果你不能得到正确结果请到caniuse查一查看看是 ...
- C#控制台程序使用Log4net日志组件
1.Log4net一般都不陌生,但是在配置上不同类型的项目又不相同的地方比如C#控制台程序和C# MVCWeb项目,拿控制台项目为例 项目源码在文章底部 2.首先创建一个控制台程序,引入Log4n ...
- angularjs jsonp跨域
<script> (function(angular){ "use strict" var app= angular.module('appController',[] ...
- single number i && ii && iii
Problem statement Elementary knowledge: There is a popular question when I seeked my job at Beijing: ...
- 利用Sinopia搭建私有npm包
1.安装sinopia包 npm install -g sinopia 如果是Windows系统用上面的方式安装sinopia很有可能报错,推荐使用下面方式安装: npm install sinopi ...
- Qt 之 入门例程(二)
本文以 Qt 中的 QtConcurrent::run() 函数为例,介绍如何将函数运行在单独的某一个线程中. 1 QtConcurrent::run() QtConcurrent 是一个命名空间, ...
- C返回函数指针的函数
如下函数 char (*retCharWithInt(char, char))(int); 申明了函数指针retCharWithInt,该指针指向一个形参是(char,char),返回值是char(* ...
- z-Tree-checkbox
引入z-Tree css/js/不要忘记excheck.js //html部分 <div> <input type="text" v-model="b ...
- 安卓TextView限定行数最大值,点击按钮显示所有内容
问题展示 如上图所示,在普通的TextView中,要求: 最多显示3行 超过三行显示展开按钮 且点击展开按钮显示完整内容 这个需求看似简单,但解决起来会遇到两个较为棘手的问题:1,如何判断是否填满了前 ...