Matlab
文章平均质量分 67
龙猫略略略
做点想做的事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Matlab】根据伯德图计算pid参数方法原理
在控制器的前面,再增加一个系数 k,用于调整幅频响应的增益,就可以调整穿越频率到指定的值上,系数 k 的计算原理也比较简单,求出不加 k 时,整个控制器加系统在期望穿越频率下的幅值,记作 g,然后求倒数赋给 k 即可。求解参数时,可以根据自己看重系统的哪些性能来联立方程,例如,给定系统的滤波系数T2,期望的系统截止频率 wn_ref,期望的系统穿越频率 wc_ref,期望的系统相位裕度 PM。证明计算是无误的,有一点点的误差关系不大,matlab画图与计算的精度有一些区别,不完全一样关系不大。原创 2023-06-27 21:46:38 · 7873 阅读 · 1 评论 -
【Matlab】LM迭代估计法
其中 y(i) 为第 i 组数据的真实值或理论真实值,fi(θ) 为第 i 组数据的预测值,目的就是找到一组 θ,使得代价函数达到最小值。7.更改估计参数之后,再次使用 n 组采样数据,重复 6 步骤,如果代价函数值变化小于设定的迭代精度,或达到最大迭代次数,则停止迭代,返回跌代后的参数向量 θ。6.迭代更新参数向量,雅可比矩阵(有一些简单的情况雅可比矩阵只与采样值有关,就可以只计算一次),这里将收敛补偿设置为1,即α = 1。迭代次数为 1000 次,采样 100 组 x,y 数据。原创 2023-06-18 22:13:19 · 3734 阅读 · 1 评论 -
【Matlab】使用反步法设计控制器
反步法的核心思想是使用李雅普诺夫稳定性以及李雅普诺夫方程来设计控制率。在开始反步法的推导之前,可以先熟悉一下李雅普诺夫稳定。李雅普诺夫函数李雅普诺夫稳定简要介绍的话,就是状态x能够一直维持在某一个范围内不发散,便满足李雅普诺夫稳定,如果随着时间t增大,最终状态x能够收敛到0,便是渐进稳定:那么这个控制器的设计,如果要利用李雅普诺夫稳定性的话,就需要自己找到一个控制率,能够使得状态x(或状态误差e),满足李雅普诺夫稳定,找到的这个控制率,就是李雅普诺夫函数。这里,我们常见的李雅普诺夫函数是如下原创 2022-04-07 09:38:53 · 2706 阅读 · 1 评论 -
【Matlab】前馈控制
对于一些控制精度没有什么要求,但是要求实际的状态量的变化趋势要跟随给定量的趋势的场景,可以考虑一下采用前馈控制。例如需要控制机器人的位置跟随某个曲线的变化趋势。假设给定位置与给定速度的关系如下表示:即,速度经过一个惯性环节,再经过积分环节,便得到位置,那么倒推回来,我们知道期望位置Xd,便可以倒推回期望速度Vd。之后便可以得到期望速度Vd的表达式。那么便可以建立以上公式的模型:经过上面的环节,就得到给定速度Vd,考虑到实际控制肯定会有滞后,所以我们再给定速度Vd后加入一个惯性环节,来模拟原创 2022-03-28 20:36:40 · 3817 阅读 · 0 评论 -
【Matlab】线性二次型最优控制问题(LQR控制)
前面介绍了变分法与极小值原理的基础思想,之后有一个非常重要的应用就是线性二次型的最优控制问题。假如系统是线性的,性能泛函是状态变量与控制变量的二次型函数的积分,那么这样的问题称之为线性二次型最优控制问题。形如:上式中,Q1为状态加权矩阵,Q2为控制加权矩阵,Q0为终端加权矩阵。(有些书中把Q2矩阵写作R矩阵)在实际应用中,Q1,Q2是对称矩阵并且常取对角阵。在实际的应用中,第一项为 Lx = 1/2 * xT * Q1 * x,其中x表示状态误差,x越大,代价函数Lx越大,Q1的对角线上的元原创 2022-03-15 00:22:35 · 7336 阅读 · 2 评论 -
【Matlab】极小值原理
极小值原理是由苏联学者提出的,由变分法引申而来,与变分法比较相似。用古典变分法来求解最优控制问题的前提,都是假定控制变量u是不受限制的,从而得到的最优控制u需要满足方程 偏导∂H/∂u = 0。假如控制量u满足一个约束条件:g[x(t),u(t),t] ≥ 0 ,在这种情况下 ∂H/∂u = 0 不成立,就可以用极小值原理来处理这个问题。极小值原理的实际意义在于放宽了控制条件,解决了当控制为有界闭集时,容许控制的求解问题。极小值原理内容假定系统的状态方程为:一些约束条件如下:则要原创 2022-03-14 21:05:38 · 2125 阅读 · 1 评论 -
【Matlab】变分法求控制器(有约束)
在上篇文章中的例子是属于没有约束条件的泛函极值问题,但是在实际的最优控制问题中,泛函J所依赖的函数往往会受到系统状态方程的约束。那么如果碰到这种问题的话,使用变分法是如何处理呢?思路应该是这样的:应用拉格朗日乘子法,之后就可以将这种有约束条件的泛函极值问题转化为无约束条件的泛函极值问题。拉格朗日问题假如有一个系统,并列出其性能泛函如下:首先,我们需要将其写成约束方程的形式:引入一个拉格朗日乘子,构造一个增广泛函:之后,可以将此增广泛函单独再定义为H函数,此H函数称作哈密尔原创 2022-03-14 21:04:16 · 1385 阅读 · 2 评论 -
【Matlab】变分法求控制器(无约束)
在动态最优控制中,目标函数是一个泛函数,求解动态最优化问题可以看做是求泛函极值的问题,求解泛函极值有一个方法,即变分法,本文章便介绍有关变分法的一些自己的学习理解。变分法的基本概念泛函如果一个因变量的宗量不是独立自变量,而是另一些独立自变量的函数,则称该因变量为这个宗量的泛函。当然,单纯的从这个概念上可能不太好理解,其实可以对比函数的概念:例如上述从P1点到P2点有不同的路径可以到达,每一个路径对应一个函数y,y的宗量是x,即y是x的函数,所有的路径y构成一个集合,即为泛函J泛函原创 2022-03-14 21:02:41 · 2059 阅读 · 0 评论 -
【Matlab】设计状态观测器
关于控制理论的学习是长期的,时常就得拿出来复习一下,不然就忘记了,在去年的学习工作中发现了自身理论知识的匮乏,因此在今年会重新拿出来复习一下控制理论,巩固自己的知识储备。总体步骤:关于状态观测器的设计,可以按照一下几个基本步骤来设计:1)引入反馈矩阵G,列出状态观测器的状态方程2)求出状态方程的特征多项式3)写出观测器期望极点的特征多项式4)求解出反馈矩阵G的系数例子:例如一个系统的状态方程:设计状态观测器,使其极点为-10,101.引入反馈矩阵G原创 2022-03-14 21:01:51 · 9115 阅读 · 6 评论 -
【Matlab】使用龙格库塔方法求积分
在实际工作中,有一些需要求积分的场合,突然想到可否使用龙格库塔的方式求积分,然后就查找了相关的资料并使用了一个简单的函数验证了一下。基本原理:在各种龙格-库塔法当中有一个方法十分常用,以至于经常被称为“RK4”或者就是“龙格-库塔法”。该方法主要是在已知方程导数和初值信息,利用计算机仿真时应用,省去求解微分方程的复杂过程。 [1]令初值问题表述如下:则,对于该问题的RK4由如下方程给出:其中这样,下一个值(yn+1)由现在的值(yn)加上时间间隔(h)和一个估原创 2022-03-14 21:00:55 · 4158 阅读 · 4 评论 -
【Matlab】线性跟踪微分器
线性跟踪微分器介绍:线性跟踪微分器出自自抗扰控制ADRC,线性跟踪微分器有两个作用,一是可以用来滤波,而是可以用来求取输入的微分。这里有一篇文章可以推荐看看:https://blog.youkuaiyun.com/qq_35007540/article/details/87909764这里我想再次根据此微分器的定义来重新编写验证一下。以线性TD为例,连续系统的状态空间形式为其中是滤波后的输入,而为滤波后输入的微分。将其转化为传递函数形式为显然线性TD的原创 2022-03-14 20:59:53 · 1890 阅读 · 0 评论 -
【Matlab】建立最优控制LQR控制器模型
前言之前做了有关于系统辨识以及配置极点来控制系统响应的相关内容,那些相当于是打开了一个新世界的大门,在此基础上,一直想学习一下最优控制的相关内容,并应用在项目上,因此,学习了相当长的时间,然后搭建模型,不过越来越感到,我学习到的也只是控制世界的冰山一角,话不多说,开始记录搭建模型的步骤。传递函数转化到状态空间首先,我可以辨识出系统的传递函数,需要转化成状态方程,这里我稍微记录了一下由传递函数转换到状态空间的步骤:以上是随便举了一组数据手算的,之后使用Matlab验证,Matlab是有原创 2022-03-14 20:58:03 · 6559 阅读 · 2 评论 -
【Matlab】极点配置控制(PPC)
前言前段时间一直在做系统辨识相关的东西,但知道了传递函数,也要会分析传递函数,设计控制器,或者根据传递函数来计算PID参数嘛。所以对于传递函数的分析是比较重要的,因此,后续我学习了一下这个极点配置控制(PPC),然后随便举了一个测试传递函数的例子,自己按照书上的步骤计算了一下,然后仿真效果,看起来还行吧,但是还是有很多疑点的,本节文章,只是记录一下极点配置控制的步骤,细节部分还需要持续的对与控制理论的学习。设计极点配置控制的控制律为:F(z^-1) * u(k) = R(z^-1) * yr(k原创 2022-03-14 20:56:17 · 6809 阅读 · 0 评论 -
【Matlab】M文件编写PID调节传递函数
前言之前写了一篇最小二乘法的文章,描述了根据最小二乘法来做曲线拟合的方式,而且从最小二乘法最原始的公式入手编写M文件,目的是可以在单片机,或者说是方便用C来实现。本篇讲述使用M文件来针对一个系统传递函数来编写PID程序,包括连续PID,以及离散PID的程序编写。当然,PID也只是一个节点,最终我是想要使用最小二乘法来辨识系统传递函数,然后根据配置零极点的方式计算PID,达到离线计算PID参数的目的,当然,也可以继续深入,了解最小二乘法的其他实时性改进型,达到自适应控制的目的。传递函数差分方程:原创 2022-03-14 20:55:23 · 6198 阅读 · 0 评论 -
【Matlab】最小二乘法拟合多项式
前言在最近的电机项目中,有遇到有传感器数据并不线性的问题,然后想要用最小二乘法做个曲线拟合,反过来去校准不线性的传感器的数据,因此记录一下使用最小二乘法来拟合多项式的曲线的步骤。本篇从最小二乘法的原始公式入手编写M文件,目的是方便使用单片机实现,或者说是方便用C来实现。拟合一次函数:我们先试着拟合一个简单一点的,从一元一次函数开始。最小二乘法拟合曲线需要首先知道曲线的通用公式。一次函数的通用公式为y = k * x + b,使用matlab编写很容易实现。这里我直接写入了几个点,随便编了一组数据原创 2022-03-14 20:54:23 · 12571 阅读 · 1 评论 -
【Matlab】电流转速闭环直流电机系统仿真
前言以前我一般是直接敲代码,但近些日子越来越感觉到这样的局限性。我对于Matlab建模,仿真,生成代码直接到工程中使用的流程是不熟悉的,以前是因为不熟悉,所以选择直接敲代码,但痛定思痛,我还是应该继续挑战自我,勇于学习不知道的东西,跳出自己的舒适圈,从另一个角度反观自己以前的东西,才会有更深的体会与理解,所以先从简单的模型开始学习,最后再到后面复杂的观测器,高频注入,参数辨识等。如有错误,欢迎指正。这个模型的数据以及模型的基本思路是参照陈伯时老师的《电力拖动自动控制系统》一书。具体有疑问的话,也原创 2022-03-13 01:35:58 · 7174 阅读 · 3 评论
分享