列举一个利用MATLAB进行仿真的案例,作业涉及的MATLAB常用方法举例

文章结构

前言

常微分方程求解

传递函数与状态方程

最小二乘法

模糊控制

模糊控制器的设计

模糊控制器的仿真

曲线绘制

结束语

前言

作为控制学科的学生,在一年级的课程当中会涉及到一些MATLAB相关的作业,会用到一些常用的方法,如求解常微分方程、传递函数与状态空间方程、最小二乘法、模糊控制、曲线绘制等。为避免重复造轮子,还是有必要将这些简单的方法记录下来的。那么话不多说,接下来开始分部分进行叙述。

常微分方程求解

MATLAB内置有不少求解常微分方程的函数,如ode23、ode45、ode113、ode23t、ode15s、ode23s、ode23tb等,各个函数使用不同的方法求解,精度与速度也有一定的区别,其中最常用的是ode45。以ode45举例来说,假设我们需要求解方程dy=-y+y^2,那么使用相应的代码如下:

odefun=@(t,y)-y+y^2; % 微分方程dy=-y+y^2

y0=[0.5]'; % 变量初值

[t,y]=ode45(odefun,[0 5],y0); % 调用ode45求解

如果需要求解常微分方程组,那么可单独定义odefun函数,再调用ode45求解。例如求解如下微分方程组:

dy1=y2

dy2=6sin(t)-0.1y2-y1^5

则相应的MATLAB代码如下:

% @odefun.m

function dy = odefun(t, y)

dy=zeros(2,1);

dy(1)=y(2);

dy(2)=6*sin(t)-0.1*y(2)-y(1)^5;

end

% @ode45test.m

y0=[0.5 0.5]';

[t,y]=ode45(odefun,[0 5],y0);

传递函数与状态方程

传函和状态方程可以说是控制专业中接触最频繁的概念之一,MATLAB也内置了近乎完善的一套方法来处理相关的问题,可以说是五花八门,应有尽有。这里我仅记录最近两次作业涉及到的一点方法,其他的方法暂无讨论。

首先是根据数组num,den定义传递函数G,用到的方法是tf。例如传递函数为G=(s+5)/(s^2+5s+3),那么定义传递函数的代码如下:

num=[1 5];

den=[1 5 3];

G=tf(num,den);

如需通过传递函数获取对应的状态空间方程,则可使用tf2ss函数进行转换,对应的也可使用ss2tf函数进行状态空间方程到传递函数的变换,具体代码如下:

[A,B,C,D]=tf2ss(num,den);

[num,den]=ss2tf(A,B,C,D,iu); % iu指定获取第几个输出对应的传递函数(对应传递函数阵的情况)

如需获取传递函数的阶跃响应,可使用step函数求得,具体的代码如下:

[y,t]=step(G,[0 10]); % 获取10秒内的传递函数阶跃响应

上面的式子是直接求取一段时间内的阶跃响应,且输入固定为1。但如需用递推的方式求得指定输入信号作用下的系统输出时,可首先转换传递函数到状态空间方程,再调用c2d函数对状

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值