• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图

人工智能 慕羽★ 2145次浏览 0个评论

本文主要介绍如何利用MATLAB编程或者Simulink工具绘制伯德图和奈奎斯特图

 

一、用程序绘制伯德图和奈奎斯特图

 

  1、conv()函数的介绍

 

   conv()函数可用于计算两个向量卷积,简单理解其实就是可以用来计算多项式乘法。我们用conv()函数可以很方便的对传递环数的分子或者分母进行计算, 举个例子比如系统的传递函数如下(本文以此传递函数介绍如何绘制图像):

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

我们可以利用conv()函数对其分母进行计算,分别把多项式的系数,按照升幂(或降幂)排列的方式构成向量,可以赋值给一个变量,作为conv()函数的参数,也可以直接作为conv()函数的参数,有一点需要注意,要么都按照升幂的方式,要么都按照降幂的方式进行排列,此处以降幂的方式介绍,代码如下:

 

den_1=conv([1 1],[1  3  5])

 

运行结果如下:

 

den_1 =
     1     4     8     5

 

这样我们就得到了分母多项式按照降幂排列的系数

 

  2、利用nyquist()函数绘制奈奎斯特图

 

   我们可以把以上的到的分子(有增益的话乘以增益K)和分母多项式的系数作为nyquist()函数的参数,此时绘制的奈奎斯特图是w从负无穷到正无穷范围的完整的奈奎斯特图,当然我们可以用第三个参数来规定w的范围。代码如下:

 

k=6;
num_1=k*[1];
den_1=conv([1 1],[1  3  5]);
nyquist(num_1,den_1)        %没有输出变量时绘制奈奎斯特曲线

 

绘制的图像如下(完整的图像):

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

采用如下方法可以简单地绘制w从0到正无穷时的图像:

 

k=6;
num_1=k*[1];
den_1=conv([1 1],[1  3  5]);
[re,im]=nyquist(num_1,den_1) %有输出变量时获取实部和虚部的值
plot(re,im);

 

 绘制的图像如下:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

为了便于观察和分析,我们可以加上网格线,画出实轴和虚轴,代码如下:

 

k=6;
num_1=k*[1];
den_1=conv([1 1],[1  3  5]);
nyquist(num_1,den_1)        %没有输出变量时绘制奈奎斯特曲线
hold  on
plot([-1  1.5],[0 0],'k')
plot([0 0],[-1 1],'k')
grid on  %打开网格线,便于观察和分析

 

绘制的图像如下:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

3、利用bode()函数绘制伯德图
    同样把传递函数的分子分母多项式系数作为bode函数的前两个参数,把w的范围作为第三个参数,可以使用logspace()函数来规定w的范围如logspace(-2,3, 200)规定w从10负2次方到10的3次方,即0.01~1000,取200个点绘制,有一点需要注意,我们用matlab绘制的伯德图是精确的曲线,不是渐近曲线,代码如下:

 

k=6;
num_1=k*[1];
den_1=conv([1 1],[1  3  5]);
w=logspace(-2,3,200);
bode(num_1,den_1,w)        %绘制伯德曲线
hold  on
grid on  %打开网格线,便于观察和分析

 

 绘制的图像如下:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

二、利用Simulink工具绘制伯德图和奈奎斯特图

 

   同样以如下传递函数为例:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图

  1、Simulink仿真模型的搭建

 

   对于Simulink模块不熟悉的可以参考博文:PID控制器—MATLAB/Simulink仿真以及性能比较与分析 的第一部分,搭建的模型如下(本文的例子比较简单,就是一个传递函数,对于一个系统而言,就会复杂很多,所以呢个人感觉用Simulink工具来绘制要简单的多):

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

 2、利用Simulink自带的Linear Analysis Tool绘制伯德图和奈奎斯特图,因matlab版本的不同Linear Analysis Tool所在的位置可能也不同,我用的matlab 2019b,位置如下:

 

   在Simulink界面点击Apps如图所示

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

点击如图所示的工具,就打开Linear Analysis Tool工具了

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

我们选择Anaysis I/Os如下图所示

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图   利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

然后点击如下图所示的工具就可以很简单的绘制伯德图和奈奎斯特图了

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

绘制的伯德图如下:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

绘制的奈奎斯特图如下:

  利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图  

我们用Simulink工具绘制的伯德图和奈奎斯特图和上文用程序绘制的伯德图和奈奎斯特图是相同的。


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明利用MATLAB编程或者Simulink工具来绘制伯德图和奈奎斯特图
喜欢 (0)

您必须 登录 才能发表评论!

加载中……