精华内容
下载资源
问答
  • 奥本海姆所著《信号与系统》(刘树棠译版)中关于Parseval定理的描述如下:信号的能量既可以按每单位时间的能量在整个时间内积分出来,也可以按每单位频率的能量在整个频率范围内积分而得到。简单地讲,信号从时域...

    奥本海姆所著《信号与系统》(刘树棠译版)中关于Parseval定理的描述如下:

    信号的能量既可以按每单位时间的能量在整个时间内积分出来,也可以按每单位频率的能量在整个频率范围内积分而得到。

    简单地讲,信号从时域变换为频域后,总能量保持不变。时域连续信号的Parseval定理表达式如下:

    equation?tex=%5Cint_%7B-%5Cinfty%7D%5E%7B%2B%5Cinfty%7D%5Cleft%7C+x+%5Cleft%28+t%5Cright%29%5Cright%7C%5E%7B2%7Ddt%3D%5Cfrac%7B1%7D%7B2%5Cpi%7D%5Cint_%7B-%5Cinfty%7D%5E%7B%2B%5Cinfty%7D%5Cleft%7C+X+%5Cleft%28+j%5Comega%5Cright%29%5Cright%7C%5E%7B2%7Dd%5Comega

    本文仅针对离散傅里叶变换(DFT)后的信号Parseval公式做一些探讨,DFT的内涵就是将时域上长度为N的序列转化为频域上长度为N的复序列,正变换和逆变换通常有以下两种形式:

    equation?tex=++++x%28k%29%3D%5Csum_%7B0%7D%5E%7BN-1%7D%7Bx%28n%29%7De%5E%7B-j%5Cfrac%7B2%5Cpi%7D%7BN%7Dnk%7D

    equation?tex=++++x%28n%29%3D%5Cfrac%7B1%7D%7BN%7D%5Csum_%7B0%7D%5E%7BN-1%7D%7Bx%28k%29%7De%5E%7Bj%5Cfrac%7B2%5Cpi%7D%7BN%7Dnk%7D

    equation?tex=++++x%28k%29%3D%5Cfrac%7B1%7D%7BN%7D%5Csum_%7B0%7D%5E%7BN-1%7D%7Bx%28n%29%7De%5E%7B-j%5Cfrac%7B2%5Cpi%7D%7BN%7Dnk%7D

    equation?tex=++++x%28n%29%3D%5Csum_%7B0%7D%5E%7BN-1%7D%7Bx%28k%29%7De%5E%7Bj%5Cfrac%7B2%5Cpi%7D%7BN%7Dnk%7D

    其中

    equation?tex=x%28n%29+ 为时域序列,
    equation?tex=x%28k%29+ 为频域序列,两种变换方法的区别在于系数
    equation?tex=1%2FN 所放的位置不同,算法上并无本质差别,FFT作为快速实现DFT的算法之一,MATLAB中采用的是第一种方法。基于此,
    离散信号Parseval定理表达式如下:

    equation?tex=%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x+%28n%29%5Cright%7C%5E%7B2%7D%3D%5Cfrac%7B1%7D%7BN%7D%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x%28k%29+%5Cright%7C%5E%7B2%7D

    等式左边很容易让人联想到信号的总能量,但又似是而非,首先连续信号的能量

    equation?tex=E%3D%5Cint_%7B-%5Cinfty%7D%5E%7B%2B%5Cinfty%7D%5Cleft%7C+x+%5Cleft%28+t%5Cright%29%5Cright%7C%5E%7B2%7Ddt

    为信号的平方对时间的积分,假设

    equation?tex=f%28t%29+%3D+%5Cleft%7C+x+%28t%29%5Cright%7C%5E%7B2%7D ,可以理解为曲线
    equation?tex=f%28t%29 与横坐标轴所围的面积。用离散信号来对连续信号的能量进行近似的过程如下图:

    518ba6ae7f2bfd9eb236c02b9370aa66.png
    图1 用离散信号来近似连续信号的积分

    所以离散信号总能量的计算应该为:

    equation?tex=E%3D%5Cfrac%7BT%7D%7BN%7D%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x+%28n%29%5Cright%7C%5E%7B2%7D

    其中

    equation?tex=T%2FN为采样间隔,
    equation?tex=T%2FN越小,图中红色矩形的面积之和越接近于蓝色曲线与坐标轴围成的面积。那么离散信号Parseval定理表达式左右同时乘以
    equation?tex=T%2FN 得到:

    equation?tex=%5Cfrac%7BT%7D%7BN%7D%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x+%28n%29%5Cright%7C%5E%7B2%7D%3D%5Cfrac%7BT%7D%7BN%5E%7B2%7D%7D%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x%28k%29+%5Cright%7C%5E%7B2%7D

    现在等式左边变为信号的总能量,具有了实际物理意义,那等式右边作何理解,咋一看什么都不是。由于等式成立,可以猜想等式右边应该也是能量的一种表达形式,但是如何将其与信号能量联系起来呢?

    首先FFT计算结果的每一点代表了该频点下信号的幅值特性,其幅度大小为该频点时域信号幅值的

    equation?tex=N%2F2 倍(前提条件是N等于2的整数次幂,即MATLAB在运算时未对序列补零),对于单频信号
    equation?tex=Acos%282%5Cpi+ft%29 一个周期内的能量为:

    equation?tex=%5Cint_%7B0%7D%5E%7B1%2Ff%7DA%5E%7B2%7Dcos%5E%7B2%7D%282%5Cpi+ft%29dt%3DA%5E%7B2%7D%2F2f

    即单频信号周期内的能量等于幅值*周期/2,也就是说单频信号的能量仅用幅值和时间两个量就能表征。

    现在回到Parseval定理等式的右边,由于FFT结果关于0对称,有:

    equation?tex=%5Cfrac%7BT%7D%7BN%5E%7B2%7D%7D%5Csum_%7B0%7D%5E%7BN-1%7D%5Cleft%7C+x%28k%29+%5Cright%7C%5E%7B2%7D%3D%5Cfrac%7B2T%7D%7BN%5E%7B2%7D%7D%5Csum_%7B0%7D%5E%7BN%2F2-1%7D%5Cleft%7C+x%28k%29+%5Cright%7C%5E%7B2%7D%3D%5Cfrac%7BT%7D%7B2%7D%5Csum_%7B0%7D%5E%7BN%2F2-1%7D%5Cleft%7C+%5Cfrac%7B2x%28k%29%7D%7BN%7D%5Cright%7C%5E%7B2%7D

    equation?tex=%5Cleft%7C+%5Cfrac%7B2x%28k%29%7D%7BN%7D%5Cright%7C 恰好等于对应频点单频信号的幅值,于是等式右边用信号幅值和时间两个量,表达了
    所有单频信号在时间T内的能量之和

    通过上述分析离散信号Parseval定理的物理意义,可以更好地帮助理解该等式的内涵。

    展开全文
  • 离散化,就是当我们只关心数据的大小关系时,用排名代替原数据进行处理的一种预处理方法。离散化本质上是一种哈希,它在保持原序列大小关系的前提下把其映射成正整数。当原数据很大或含有负数、小数时,难以表示为数...

    e929b7cbbc3562498d8e0abb337fc2b3.png

    离散化,就是当我们只关心数据的大小关系时,用排名代替原数据进行处理的一种预处理方法。离散化本质上是一种哈希,它在保持原序列大小关系的前提下把其映射成正整数。当原数据很大或含有负数、小数时,难以表示为数组下标,一些算法和数据结构(如BIT)无法运作,这时我们就可以考虑将其离散化。

    在之前关于树状数组的笔记中,我提到过离散化,但其实那时我所用的方法并不是很合理,因为它会把序列中相同的数映射为不同的排名。而实际上,离散化可以用STL较简单地完成。

    例如,现在我们有序列A=[10, 23, 35, 3, -40, 3]。我们先复制一个同样的序列:

    int C[MAXN];
    memcpy(C, A, sizeof(A));
    

    排序,去重:

    sort(C, C + n);
    int l = unique(C, C + n) - C; // l为不重复元素的数量
    

    std::unique()的返回值是一个迭代器(对于数组来说就是指针了),它表示去重后容器中不重复序列的最后一个元素的下一个元素。所以可以这样作差求得不重复元素的数量。现在我们有C=[-40, 3, 10, 23, 35]。

    再用一个数组,储存A中每个元素在C中的排名:

    int L[MAXN];
    for (int i = 0; i < n; ++i)
        L[i] = lower_bound(C, C + l, A[i]) - C + 1; // 二分查找
    

    这样我们就实现了原序列的离散化。得到L=[3, 4, 5, 2, 1, 2]。

    因为排序和n次二分查找的复杂度都是

    equation?tex=O%28n%5Clog+n%29 ,所以离散化的复杂度也是
    equation?tex=O%28n%5Clog+n%29 。完整代码很短:
    int C[MAXN], L[MAXN];
    // 在main函数中...
    memcpy(C, A, sizeof(A)); // 复制
    sort(C, C + n); // 排序
    int l = unique(C, C + n) - C; // 去重
    for (int i = 0; i < n; ++i)
        L[i] = lower_bound(C, C + l, A[i]) - C + 1; // 查找
    

    离散化也不一定要从小到大排序,有时候也需要从大到小。这时在排序和查找时相应地加上greater<int>()就可以了。


    Pecco:算法学习笔记(目录)zhuanlan.zhihu.com
    zhihu-card-default.svg
    展开全文
  • 我设置的是1积分,为什么CSDN强制变成6积分甚至11积分? ADRC的m函数版本,离散化后的公式,用matlab-function写的
  • 上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID离散...

    引言

    上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID离散化为数字形式的差分方程。

    1 准备工作

    在采样周期足够小时,可以作如下近似:
    在这里插入图片描述式中

    • T————为采样周期
    • k————为采样序号,k=0,1,2….

    用这种近似方法,可以得到两种形式数字PID控制算法

    1.1 位置式PID算法

    由前面推倒很容易得到离散化后的表达式
    在这里插入图片描述

    由此式可以看出数字调节的输出u(k)跟过去的所有偏差信号有关,计算机需要对e(i)进行累加,运算量太大,一般不用,重点说明增量式PID算法。

    1.2 增量式PID算法

    由于位置式PID的算法不够方便,不仅对偏差进行累加,占用过多的存储单元,而且不方便写程序,所以需要进行一些改进,对位置式取增量,方法如下:
    在这里插入图片描述


    2 Matlab仿真

    分析过程

    1. 对G(s)进行离散化即进行Z变换得到Z传递函数G(Z);
    2. 分子分母除以z的最高次数即除以z的最高次得到;
    3. 由z的位移定理Z[e(t-kt)]=z^k*E(z)逆变换得到差分方程;
    4. PID编程实现

    具体实现细节在代码注释中已经给出

        %设一被控对象G(s)=50/(0.125s^2+7s),  
        %用增量式PID控制算法编写仿真程序  
        %(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-3,3],  
        %  仿真曲线包括系统输出及误差曲线)。  
    
        ts=0.001;                 %采样时间  
        sys=tf(50,[0.125,7, 0]); %tf是传递函数  即被控对象函数G();  
        dsys=c2d(sys,ts,'z');    %把控制函数离散化取Z变换n阶定常离散系统差分方程
                                    %在零初始条件下取Z变换:
                                    %dsys即Y(z)/U(z)
        [num,den]=tfdata(dsys,'v');% 离散化后提取分子、分母    
        u_1=0.0;  
        u_2=0.0;  
        y_1=0.0;  
        y_2=0.0;  
        x=[0,0,0]';  
        error_1=0;  
        error_2=0;  
        %核心代码
    
        for k=1:1:1000  
        time(k)=k*ts;                        %采样次数  
        S=1;  
        if S==1                              %阶跃输入
            kp=6.5;ki=0.1;kd=1;              %初始化PID    
            rin(k)=1;                        %Step Signal   
        elseif S==2                          %正弦输入
            kp=10;ki=0.1;kd=15;             
            rin(k)=0.5*sin(2*pi*k*ts);       %Sine Signal 即实际输入      
        end 
    
        du(k)=kp*x(1)+kd*x(2)+ki*x(3);       %PID Controller   控制系数    
        u(k)=u_1+du(k);                      %真正的PID输出应该为du+前一时刻的输出
        if u(k)>=3         
           u(k)=3;  
        end  
        if u(k)<=-3  
           u(k)=-3;  
        end  
    
        %Linear model 难点就是把传递函数转化为差分方程,以实现PID控制。 
        yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;          %实际输出 num为dsys分子多项式系数,den为dsys分母多项式系数,从n阶定常离散系统差分方程变化来的。
        error(k)=rin(k)-yout(k);                        % 误差=输入-输出 
        u_2=u_1;                                        %保存上上次输入   为下次计算  
        u_1=u(k);                                       %保存上一次控制系数   为下次计算  
        y_2=y_1;                                        %保存上上次次输出   为下次计算  
        y_1=yout(k);                                    %保存上一次输出   为下次计算  
    
        x(1)=error(k)-error_1;                          %KP的系数  
        x(2)=error(k)-2*error_1+error_2;                %KD的系数  
        x(3)=error(k);                                  %KI的系数
        error_2=error_1;                                %上次的变上上次误差
        error_1=error(k);                               %这次的变上次的误差
        end 
    
    
        figure(1);  
        plot(time,rin,'b',time,yout,'r');               %输入和实际控制输出  
        xlabel('time(s)'),ylabel('rin,yout');   
       figure(2);  
        plot(time,error,'r')                            %时间误差输出曲线  
        xlabel('time(s)');ylabel('error'); 
    

    2.1 仿真效果(PID调参后)

    在这里插入图片描述
    在这里插入图片描述

    2.2 调参过程

    • Step 1
      确定比例系数Kp

      确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为

      纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。

    • Step 2
      确定积分时间常数Ti

      比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。

    • Step 3
      确定微分时间常数Td;
      微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。

    • Step 4
      系统空载、带载联调;
      对PID参数进行微调,直到满足性能要求。

    2.3 Simulink仿真部分

    这里使用Simulink仿真也非常的方便,只需要设定好PID控制器的参数和传递函数即可
    在这里插入图片描述
    这里注意Filter coefficient这个参数起前向滤波作用,这里取得1
    在这里插入图片描述

    微分环节的缺点,就是误差e变化微弱的时候,如果D过大会产生过大的修正量,导致震动不但不减小反而扩大。
    滤波器的作用就是滤除高频修正,使D更好用,说白了是一个改进型

    在这里插入图片描述

    在这里插入图片描述

    运行后双击示波器查看结果
    在这里插入图片描述
    在这里插入图片描述

    3 结论

    (1)对于PID 参数采用 MATLAB 进行整定和仿真,使用起来不仅快捷、方便,而且更为直观,同时也避免了传统方法反复修改参数调试。
      (2)系统的响应速度会随Kp值的增大而加快,同时也有助于静差的减小,而Kp值过大则会使系统有较大超调,稳定性变坏;此外,系统的动作会因为过小的Kp值减慢。
      (3)超调的减小、振荡变小以及系统稳定性的增加都取决于积分时间Ti的增大,但是系统静差消除时间会因为Ti的增大而变长。
      (4)增大微分时间Td对于系统的稳定性、系统响应速度的加快以及系统超调量的减小都会有所帮助。但是如果Td过大,则会使得调节时间较长,超调量也会增大;如果Td过小,同样地也会发生以上状况。
      (5)总之PID 参数的整定必须考虑在不同时刻三个参数的作用以及彼此之间的作用关系。

    相关Matlab代码和Simulink仿真文件请关注公众号:迈微电子研发社(左侧或下方微信扫码即可)回复“PID算法”,获取免费下载链接

    相关阅读

    1. 深入浅出PID控制算法(一)————连续控制系统的PID算法及MATLAB仿真 原文链接:https://blog.csdn.net/Charmve/article/details/104538102
    2. 深入浅出PID控制算法(三)————增量式与位置式PID算法的C语言实现与电机控制经验总结 原文链接:https://blog.csdn.net/Charmve/article/details/104536504
    3. 单片机应用系统课程设计——基于PID的直流电机调速控制系统 原文链接:https://blog.csdn.net/Charmve/article/details/103466831
    4. 2015 年全国电赛题——风力摆控制系统(B 题)原文链接:https://blog.csdn.net/Charmve/article/details/103922460

    -END-

    在这里插入图片描述

    △微信扫一扫关注「迈微电子研发社」公众号

    在这里插入图片描述

    展开全文
  • 上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID...

    引言

    上篇介绍了连续系统的PID算法,但是计算机控制是一种采样控制,他只能根据采样时刻的偏差来计算控制量,因此计算机控制系统中,必须对公式进行离散化,具体就是用求和代替积分,用向后差分来代替微分,使模拟PID离散化为数字形式的差分方程。

    准备工作

    在采样周期足够小时,可以作如下近似:
    这里写图片描述
    式中

    • T————为采样周期
    • k————为采样序号,k=0,1,2….

    用这种近似方法,可以得到两种形式数字PID控制算法

    位置式PID算法

    由前面推倒很容易得到离散化后的表达式
    这里写图片描述
    由此式可以看出数字调节的输出u(k)跟过去的所有偏差信号有关,计算机需要对e(i)进行累加,运算量太大,一般不用,重点说明增量式PID算法。

    增量式PID算法

    由于增量式PID的算法不够方便,不仅对偏差进行累加,占用过多的存储单元,而且不方便写程序,所以需要进行一些改进,对位置式取增量,方法如下:
    这里写图片描述

    Matlab仿真

    分析过程

    1、对G(s)进行离散化即进行Z变换得到Z传递函数G(Z);
    2、分子分母除以z的最高次数即除以z的最高次得到;
    3、由z的位移定理Z[e(t-kt)]=z^k*E(z)逆变换得到差分方程;
    4、PID编程实现
    具体实现细节在代码注释中已经给出

        %设一被控对象G(s)=50/(0.125s^2+7s),  
        %用增量式PID控制算法编写仿真程序  
        %(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-3,3],  
        %  仿真曲线包括系统输出及误差曲线)。  
    
        ts=0.001;                 %采样时间  
        sys=tf(50,[0.125,7, 0]); %tf是传递函数  即被控对象函数G();  
        dsys=c2d(sys,ts,'z');    %把控制函数离散化取Z变换n阶定常离散系统差分方程
                                    %在零初始条件下取Z变换:
                                    %dsys即Y(z)/U(z)
        [num,den]=tfdata(dsys,'v');% 离散化后提取分子、分母    
        u_1=0.0;  
        u_2=0.0;  
        y_1=0.0;  
        y_2=0.0;  
        x=[0,0,0]';  
        error_1=0;  
        error_2=0;  
        %核心代码
    
        for k=1:1:1000  
        time(k)=k*ts;                        %采样次数  
        S=1;  
        if S==1                         %阶跃输入
            kp=6.5;ki=0.1;kd=1;             %初始化PID    
            rin(k)=1;                    %Step Signal   
        elseif S==2                     %正弦输入
            kp=10;ki=0.1;kd=15;             
            rin(k)=0.5*sin(2*pi*k*ts);    %Sine Signal     即实际输入      
        end 
    
        du(k)=kp*x(1)+kd*x(2)+ki*x(3);      %PID Controller   控制系数    
        u(k)=u_1+du(k);                     %真正的PID输出应该为du+前一时刻的输出
        if u(k)>=3         
           u(k)=3;  
        end  
        if u(k)<=-3  
           u(k)=-3;  
        end  
    
        %Linear model 难点就是把传递函数转化为差分方程,以实现PID控制。 
        yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;          %实际输出 num为dsys分子多项式系数,den为dsys分母多项式系数,从n阶定常离散系统差分方程变化来的。
        error(k)=rin(k)-yout(k);                                       % 误差 输入-输出 
        u_2=u_1;                                                       %保存上上次输入   为下次计算  
        u_1=u(k);                                                      %保存上一次控制系数   为下次计算  
        y_2=y_1;                                                       %保存上上次次输出   为下次计算  
        y_1=yout(k);                                                   %保存上一次输出   为下次计算  
    
        x(1)=error(k)-error_1;                                         %KP的系数  
        x(2)=error(k)-2*error_1+error_2;                               %KD的系数  
        x(3)=error(k);                                                 %KI的系数
        error_2=error_1;                                                %上次的变上上次误差
        error_1=error(k);                                               %这次的变上次的误差
        end 
    
    
        figure(1);  
        plot(time,rin,'b',time,yout,'r');                        %输入 和实际控制输出  
        xlabel('time(s)'),ylabel('rin,yout');   
       figure(2);  
        plot(time,error,'r')                                     %时间误差输出曲线  
        xlabel('time(s)');ylabel('error'); 

    仿真效果(PID调参后)

    这里写图片描述
    这里写图片描述

    调参过程

    (1)
    确定比例系数Kp
    确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为
    纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
    (2)
    确定积分时间常数Ti
    比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。
    (3)
    确定微分时间常数Td
    微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。
    (4)
    系统空载、带载联调
    对PID参数进行微调,直到满足性能要求。

    Simulink仿真部分

    这里使用Simulink仿真也非常的方便,只需要设定好PID控制器的参数和传递函数即可
    这里写图片描述
    这里注意Filter coefficient这个参数起前向滤波作用,这里取得1
    这里写图片描述

    微分环节的缺点,就是误差e变化微弱的时候,如果D过大会产生过大的修正量,导致震动不但不减小反而扩大。
    滤波器的作用就是滤除高频修正,使D更好用,说白了是一个改进型

    这里写图片描述

    这里写图片描述

    运行后双击示波器查看结果
    这里写图片描述

    这里写图片描述

    结论

      (1)对于PID 参数采用 MATLAB 进行整定和仿真,使用起来不仅快捷、方便,而且更为直观,同时也避免了传统方法反复修改参数调试。
      (2)系统的响应速度会随Kp值的增大而加快,同时也有助于静差的减小,而Kp值过大则会使系统有较大超调,稳定性变坏;此外,系统的动作会因为过小的Kp值减慢。
      (3)超调的减小、振荡变小以及系统稳定性的增加都取决于积分时间Ti的增大,但是系统静差消除时间会因为Ti的增大而变长。
      (4)增大微分时间Td对于系统的稳定性、系统响应速度的加快以及系统超调量的减小都会有所帮助。但是如果Td过大,则会使得调节时间较长,超调量也会增大;如果Td过小,同样地也会发生以上状况。
      (5)总之PID 参数的整定必须考虑在不同时刻三个参数的作用以及彼此之间的作用关系。

    相关Matlab代码和Simulink仿真文件已经上传,可自行下载https://download.csdn.net/download/kilotwo/10329949

    展开全文
  • 假如设计好了一个控制器,得到了...我们这里讲的离散化都是借助matlab工具进行的,matlab提供多种离散化的方法; dsys=c2d(sys,ts,’method’); % 传函离散,其中ts表示离散的采样周期,method表示离散的方法;sys表示
  • Simulink中连续模型的离散化

    千次阅读 2020-10-14 14:40:35
    Simulink中连续模型的离散化 第一步 打开MATLAB 打开simulink 新建一个空白的工程 以积分模块为例,向工程中添加一个积分模块。 点击设置 修改以下几个参数并点击Apply 按下图指示选择模型离散化工具 设置好...
  • 常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似 常微分方程的解法 (二): 欧拉(Euler)方法 常微分方程的解法 (三): 龙格—库塔(Runge—Kutta)方法 、线性多步法 ...
  • 一、概念 说明:1.系数可以看成是对积分项系数ki的变速 2.变速积分积分分离两种控制方法很相似,但调节方法不同,前者对...%获取离散化模型 ts = 20; %采样时间 sys = tf([1],[60,1],'inputdelay',80); dsys = c...
  • 积分分离式数字pid的matlab实现

    千次阅读 2019-12-13 11:27:04
    积分分离的基本思想:当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使得系统稳定性降低,...%获取离散化模型 ts = 20; %采样时间 sys = tf([1],[60,1],'inputdelay',80); dsys = c2d(sys,ts,'z'); [n...
  • 前言:pid中积分的作用是消除稳态误差,所以他很重要,为了提高他的运算精度,于是引入梯形积分。 梯形积分公式: 说明:普通pid的积分就是将误差累加...%获取离散化模型 ts = 0.001; %采样时间 sys = tf([523500...
  • matlab解决平面应力问题

    千次阅读 2020-12-03 13:08:00
    使用等参Q4元素将板离散化。使用标准的FEM软件进行预处理。使用二阶高斯积分获得刚度矩阵。将获得的结果与标准FEM软件进行比较,两者的结果吻合良好。 代码获取​​​​​​​ ...
  • dlinmod 离散系统的线性模型 dmperm 矩阵Dulmage-Mendelsohn 分解 dos 执行DOS 指令并返回结果 double 把其他类型对象转换为双精度数值 drawnow 更新事件队列强迫Matlab刷新屏幕 dsolve 符号计算解微分方程 ...
  • 信号的时域分析及Matlab实现第六章 信号的时域表现 6.1 信号的表示及可视 6.2 信号的时域运算、时域变换及MATLAB实现 6.3 离散时间序列卷积 6.4 连续时间信号卷积 * 6.4 连续时间信号卷积 连续信号卷积积分定义及...
  • % 离散优化 % *enum - 枚举法 % *monte - 蒙特卡洛法 % *lpint - 线性整数规划 % *L01p_e - 0-1整数规划枚举法 % *L01p_ie - 0-1整数规划隐枚举法 % *bnb18 - 非线性整数规划(在MATLAB5.3使用) % *bnbgui - 非线性...
  • 将基尔霍夫衍射积分公式与菲涅耳衍射积分公式转换成傅里叶变换的形式,在环缝透镜系统中用傅里叶方法描述观察面的光强分布,对衍射面进行数据抽样,导出观察面光强分布的离散化傅里叶公式;通过设置相关参数并使用...
  • MATLAB图像变换

    千次阅读 2017-04-17 19:42:58
    举个例子,要在空间域中做卷积运算,其难度相当大,但是通过离散傅里叶变换,可以将空间域中的卷积运算转化为频率域中的乘法运算,繁为简。所以,求解这类问题的一般思路是: 1)从空间域转化到频率域
  • 精通matlab6.5

    2010-04-07 10:27:34
    8.5 离散时间系统和混合系统 8.6 SIMULINK的分析工具 8.7 数值计算方面的考虑 8.8 S函数模块 第九章 句柄图形 9.1 句柄图形体系 9.2 图形对象的操作 9.3 对象属性的获取和设置 9.4 为低层指令绘图准备图/轴 9.5 图形...
  • 8.5 离散时间系统和混合系统 8.6 SIMULINK的分析工具 8.7 数值计算方面的考虑 8.8 S函数模块 第九章 句柄图形 9.1 句柄图形体系 9.2 图形对象的操作 9.3 对象属性的获取和设置 9.4 为低层指令绘图准备图/轴 ...
  • MATLAB数学建模工具箱

    热门讨论 2013-05-20 15:06:10
    % 离散优化 % *enum - 枚举法 % *monte - 蒙特卡洛法 % *lpint - 线性整数规划 % *L01p_e - 0-1整数规划枚举法 % *L01p_ie - 0-1整数规划隐枚举法 % *bnb18 - 非线性整数规划(在MATLAB5.3使用) % *bnbgui - 非线性...
  • 第十一期:MATLAB实现离散时间系统的时域分析 本期视频时长95分钟,通过具体的案例解析,详细地讲解了离散时间系统的三种时域分析方法:递归法(迭代法),filter函数求解法,基于单位样值响应的卷积求解法;并深入...
  • 常微分方程的解法 (四): Matlab 解法

    千次阅读 多人点赞 2019-04-30 10:33:01
    常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似 常微分方程的解法 (二): 欧拉(Euler)方法 常微分方程的解法 (三): 龙格—库塔(Runge—Kutta)方法 、线性多步法 ...
  • Matlab数学建模工具箱

    热门讨论 2010-03-15 12:14:21
    % 离散优化 % *enum - 枚举法 % *monte - 蒙特卡洛法 % *lpint - 线性整数规划 % *L01p_e - 0-1整数规划枚举法 % *L01p_ie - 0-1整数规划隐枚举法 % *bnb18 - 非线性整数规划(在MATLAB5.3使用) % *bnbgui - 非线性...
  • 增量式数字PID算法的Matlab实现

    万次阅读 2017-08-01 23:49:42
    随着计算机的出现,我们需要把模拟的PID离散化,以便能在计算机中处理,公式(1)中的积分项和微分项不能使用,必须经过离散化处理,我们假设:T---采样周期,K--采样的序列,则可以用离散的 KT 代替 连续时间 t 。...
  • 离散傅里叶变换(DFT)顾名思义就是对傅里叶变换进行离散化,包括频率和时间的离散化,我们令和,代入傅里叶正变换中,得: 将积分变为求和得: 取N点进行时域截断得: 考虑到就是离散化后第n点的时间函...
  • 专家PID的控制算法-MATLAB实现

    千次阅读 2020-08-07 10:09:20
    专家PID的控制算法-MATLAB实现 PID控制,实际应用中多是PI控制和PD控制,就是根据系统的误差,利用比例,积分和微分计算出控制量进行控制的。PID专家控制的实质,是基于受控...现需要先进行离散化,然后在结合专家PID
  • MATLAB程序设计与典型应用(源程序)

    热门讨论 2013-07-04 20:54:16
    MATLAB符号微积分运算... 82 3.2.1 符号极限运算... 82 3.2.2 符号函数微分运算... 82 3.2.3 符号函数积分运算... 83 3.2.4 符号求和函数与级数展开函数... 84 3.3 复变函数运算的MATLAB实现... 86 3.3.1 复数的概念...
  • 18.2模型离散化及性能分析 18.2.1离散模型的性能分析 18.2.2离散模型的极点 18.2.3离散模型的根轨迹 18.3附加超前校正装置及性能分析 18.4闭环控制系统设计与性能分析 第19章径向基函数神经网络模型与学习算法...
  • 一、位置式PID 按照模拟PID控制算法,以一系列采样时刻点KT代替连续时间t,用矩形法数值积分代替积分,以一阶向后差分代替微分。...最后可得离散化的PID表达式 式中T为采样时间(采样周期) 例 ...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

matlab积分离散化

matlab 订阅