【仿真总结】基于matlab的传递函数计算与绘图

前言

  在DC-DC电路控制算法中,PID控制是最常见且实用的,但实现前提有二,一是需要手算电路传递函数,二是需要将实际电路元件数值代入计算,第一步无法避免,但是在进行第二步时,存在大量基础、细致的数值计算,容易混淆,并且最终目的是获取电路传函的bode图。针对上述问题,本文通过m文件,将第二步程序化,以最简便的方式绘制出传函相关图像。

一、表示传递函数

  在传递函数中,需要保留 s s s表示状态变量,这里借助符号函数实现,程序如下;

syms s R_c C_dc R_L L
G_IV = ((s*R_c*C_dc+1)+s*C_dc*(R_L+s*L))/((s*R_c*C_dc+1)*(R_L+s*L))

  运行结果如下:
在这里插入图片描述

图1 符号函数表示结果

  此时就可以将syms中的参数R_c、C_dc、R_L、L替换为电路实际值,就可以直接计算传递函数,按照下表参数计算传函:

参数取值
R_c0.5
C_dc100e-6
R_L0.5
L100e-3

在这里插入图片描述

图2 符号函数赋值结果

二、获得传递函数

  上一步获得的公式仍旧为符号函数,需要将其转化为传递函数,即提取出符号函数中的分子、分母系数:

[num,den]=numden(G_IV);% 提取符号表达式分子和分母
Num=sym2poly(num);  % 返回多项式项式系数
Den=sym2poly(den);
tf_T_u = tf(Num,Den); 

  运行结果如下:
在这里插入图片描述

图3 转换传递函数结果

三、绘图

  最后绘制获得的传递函数图像,代码如下:

figure('Name','nyquist曲线','Color','white');
nyquist( tf_T_u );
figure('Name','根轨迹','Color','white');
rlocus( tf_T_u );
figure('Name','波特图','Color','white');
bode( tf_T_u );
figure('Name','闭环传递函数的零极点图','Color','white');
pzmap( tf_T_u );

  运行结果如下:
在这里插入图片描述

图4 nyquist图

在这里插入图片描述

图5 根轨迹

在这里插入图片描述

图6 Bode图

在这里插入图片描述

图7 零极点图

总结

  本文提及的传函计算与绘图仅适用于较简单的情况,如果面对传函存在 s s s嵌套运算的情况,需要提前化简,具体化简方法列在参考文献中。

参考文献

[1]使用MATLAB传递函数的绘制伯德图
[2]Matlab化简符号表达式

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值