首页 > 编程知识 正文

matlab奈奎斯特曲线,matlab步长的影响

时间:2023-05-04 17:28:21 阅读:259733 作者:2434

matlab是个很强大的计算软件,它涉及的领域非常广。只要你所涉足学科和数学有关,基本都能用到matlab。在开关电源闭环设计中,我们经常需要画开关电源的小信号模型的伯德图。这时,matlab的优势就体现出来了。在matlab中支持三种操作方式,一是直接在命令窗口编写脚本代码,然后运行。另外一种是编写m文件,然后编译运行。

楼主下面用使用实例来说明如何使用matlab来画传递函数对应的伯德图。使用以前出的一个教程做例子。假设有一buck变换器,它的电路参数为:

Vin=20,L=50uH,C=500uF,R=1ohm,Rc=0.01ohm,Rl=0.25ohm。

上图是我在我之前发的一个buck的pid调节教程帖子里截的(传送门http://bbs.21dianyuan.com/165617.html)。下面介绍一下matlab里面的画传递函数需要使用的函数。

首先我们需要了解tf函数,tf函数的作用使用来是构建传递函数的,与它作用相同的还有函数zpk,下面一个一个介绍他们的使用方法。

tf函数使用的使用只需要知道传递函数的分子分母系数就可以了。例如上面给出的buck的传递函数,他分子的系数为Vin,Vin/wz;分母的系数为1,1/q/w0,1/w0^2。我们把这些系数都计算出来(可以直接使用matlab计算)后,调用这个tf函数,我们就可以构建出上面的那个传递函数。构建方法如下:

G1=tf([Vin/wz Vin],[1/w0^2 1/q/w0 1]);

运行上面一行代码,我们就可以构建出上面给出的那个传递函数了。构建出传递函数后我们就可以调用margin函数或者是bode函数画出它对应的伯德图了。但是,大家有没有觉得,调用tf函数的时候我们给出的系数为什么和我们列出的系数不一样呢?这是因为,在tf函数的帮助文档里,是这样要求的:在调用tf函数时,传递函数的分子分母的系数应该按照降幂的顺序(什么是降幂顺序?降幂顺序指的就是按照w的高次方到低次方的顺序排列)排列,而且第一个参数矩阵对应的是传递函数分子的系数,第二个参数矩阵对应的是传递函数分母的系数。所以应该按照上面的系数顺序来调用tf函数。

我们现在命令窗口运行下面的脚本代码,把一些基本的值都算出来,代码如下:

Vin=20;l=50e-6;c=500e-6;r=1;rl=0.25;rc=0.01;

w0=1/(l*c)^0.5;  wz=1/rc/c;  wzl=rl/l; q=r/(l/c)^0.5;

运行界面如下图所示:

然后我们调用tf函数,如下图所示:

在调用margin函数,就可以把bode图画出来,如下图所示:

看到了吗?伯德图出来了,而且穿越频率和相位裕度什么的都有了,不用自己解方程,good

job!我们把伯德图关掉在调用一下bode函数试试。

看到了margin函数和bode函数的区别吗?楼主一般喜欢使用margin函数==。有些同学想把横坐标换成频率,怎么办呢?在bode函数和margin函数中,其实还有一个结构体参数。我们加一下这几行代码就可以了。

p=bodeoptions;

p.FreqUnits='Hz';

p.Grid='on';

加了这几行代码再调用bode函数,会发生什么呢?

看到了吗?就是这么神奇!但是唯一的缺陷就是margin函数没有这个结构体的参数==,真是忧伤啊!世间之事就是难以十全十美==,处女座们怎么办啊!有兴趣的工们--自己捣鼓捣鼓吧,楼主愚钝,不想钻研了。或许还有其他办法能十全十美。

楼主开一贴,不为征服世界!只为方便大家,我亲爱的工程师们!新的一天,加油吧!

最爱matlab!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。