自学内容网 自学内容网

【仿真总结】基于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化简符号表达式


原文地址:https://blog.csdn.net/TD_Lemon/article/details/136524099

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!