Matlab中用Simulink快速画Bode图及 .m 文件画Bode图

Matlab中用Simulink快速画Bode图及 .m 文件画Bode图

Simulink画Bode图

一万年没用matlab画过Bode图了,但是以后应该是要经常用到的,所以掏出自控原理,再学一遍Bode图的画法。通过代码来画实在是脑阔疼(不过习惯后应该还是会很得心应手的吧),经过师兄指点,发现了一个简单又快捷的画法,特此记录。

首先打开simulink,拖出一个传递函数框(Transfer Fcn),写入自己想画的传递函数,如下图所示:
在这里插入图片描述
然后右键传递函数(上图中为 Transfer Fcn2),选择 Linear Analysis,选择 Linearize Block,如下图所示:
在这里插入图片描述
然后出现下图,点击右上方的 bode 选项即大功告成了。
在这里插入图片描述
对于其他传递函数的 bode 图,可以同样的方式操作,最后选择 Bode Plot 1 则会在 Bode Plot 1 中继续画出新的 Bode 图,如下如示,这样就可以轻松比对各个 Bode 图了。若继续选择 Bode ,则会另开一个 Bode Plot 2 画出新的 Bode 图。
在这里插入图片描述
对于Bode图中的数据,显然就在左边"Linear Analysis Workspace"中的"linsys1"和"linsys2"中,想提取出来再用其他画图工具自行绘制的可以用鼠标选中比如"linsys1",将其拖到左上方的"MATLAB Workspace"中,这样我们就能在Matlab的workspace中找到该变量了,再通过如下语句即可获得幅频、相频数据:

>> [mag,phase,freq] = bode(linsys1)

此处参考文献:https://www.mathworks.com/matlabcentral/answers/273363-how-to-export-data-from-bode-in-linear-analysis-tool

最后可能是我对Simulink的理解还不够深入吧,我放弃了使用Simulink画Bode图。原因在于"Linear Analysis Tool"虽然可以快速画出Bode图,但也仅止于此了,我没找到可以设置图中点的个数或者说点与点间距的地方(设置横轴单位、设置横轴范围的地方倒是有),所以Simulink画出的Bode图也就只能看看,放到文章里还得上 .m 文件。

.m 文件画Bode图

这个没什么好说的,无非就是几个函数的使用,所以直接上代码:

Hz = logspace(-1, 5, 10000);
w = 2 * pi * Hz;

num = [2 * pi * 25];
% den = [1 0];
% num = [2 * pi * 25];
den = [1 2 * pi * 25];

% bode(num, den, w);

[mag, pha, w1] = bode(num, den, w);
% log10w1 = log10(w1);
mag_plot = 20 * log10(mag);

subplot(2, 1, 1); 
semilogx(Hz, mag_plot);
% plot(log10w1, mag_plot)

subplot(2, 1, 2);
semilogx(Hz, pha);
% plot(log10w1, pha);

这是一个截止频率为25Hz的低通滤波器。另外我这里画出的图的横轴单位是Hz。其中的函数也就:logspace、bode、subplot、semilogx。这样来看好像 .m 文件来画Bode图也不比 Simulink 复杂呀,甚至更简单。(文件先保存了,免得后面又忘记怎么画Bode图了)

  • 24
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值