图片缩略图

用渐近线绘制伯德图

版本1.2.0.2(3.41 kB) Trond Andresen.
用渐近线绘制伯德图

215下载

更新20世纪9月22日

查看版本历史记录

查看许可证

函数asymp()对应于bode(),但它也绘制幅度和相位图的渐近线。相渐近线只有水平和垂直。
ASYMP()只接受SISO传输功能。
如果传递函数也有时间延迟,则忽略时间延迟
对于相渐近线。
可以仅以两种方式调用ASYMP(),ASYMP(H)或ASYMP(H,WMIN,WMAX)。

引用

Trond Andresen(2021)。用渐近线绘制伯德图(//www.tatmou.com/matlabcentral/fileexchange/10183-bode-plot-with-asymptotes), MATLAB中央文件交换。检索

意见及评分(47.

扎克长

Fausto指出,在函数的最底部,一行“set(gca, 'XTickLabel',x);”导致x轴标记混乱。如果我注释掉“将频率轴转换为十进制数”小节中的代码以删除该功能,那么该轴似乎被正确地标记了。

Trond Andresen.

克丽丝霍夫曼。尝试更新版本,希望错误是固定的。谢谢!

克里斯霍夫曼

在某些情况下,相位计算不正确。try asymp and bode for MySys = tf([1 00],[1 20 100]);相位开始于-180为不对称,开始于180为Matlab的波德。

Shaidul Ekram

如何将此文件添加到MATLAB软件?

努斯城堡

工作得很好。我遇到的唯一问题是,当我将其置于副图中时,它不能正确显示。

安迪常

Thomas Pandolfi

Punyaphad Dachanabhirom

Jon Walderhaug.

Trond Andresen.

对不起,刚才看到你的更正了。但是这里也是一样的,在频率q = 1 rad/s时,asymp(.)和bode(.)都给出amp = 0dB。

Fausto Oropco Coy

对不起,我的意思是1 rad / s必须有0 dB增益

Fausto Oropco Coy

这是我测试的传递函数:

num = -999.9000 e - 003;
穴= [9.9990 e + e - 009 1.0000 000 0.0000 e + 000];
H = TF(NUM,DEN);
ASYMP(H,2 * PI * 1E-3,62.8319E + 009);

这是一个视频显示,当我最大化图形时,Xaxis刻度标签不对应于右值(0 rad / s必须具有0 dB增益)

https://youtu.be/1dm0kcwd6pq.

Trond Andresen.

我是这个节目的作者。福斯托,你能告诉我你用的哪个传递函数导致了错误的x轴标记吗?那我就亲自检查一下。

Fausto Oropco Coy

令人敬畏的函数,非常有用,在Bode图的学习中,非常感谢,但是在Matlab 2017 Live Editor时,数字在图形窗口中打开时,X轴滴答标签不对应真实位置。

Alessandro Ballio.

惊人的!

石石

Matteo Luciardello LeCardi.

Josep Guasch.

Josep Guasch.

David Gonzalez Bravo.

很有用!!!

很好用,谢谢。

Trond Andresen.

从Chantal Muller重新错误消息:
如果h(s)= num(s)/ den(s),则传递函数必须具有学位(num)<= degres(deN),即适当或严格正确。

罗伯特·斯坦格尔

建议改进:添加网格线。查找所有呼叫Matlab的'Bode.m',并添加',网格'。

罗伯特·斯坦格尔

自动完成错误:'渐散体,“渐近”是“渐近”。

Chantal Muller.

太棒了!
但我不明白为什么这个功能无法绘制:
H1 = 1 + s / 10
H2 = 1 s / 10
Wheareas没有PB:
H7 = (10 * s ^ 2 + 5 * s + 10) / (1 + s / 10)
我在想有一个约束d°(den)< d°(num),但H7工作。
无论如何,谢谢你的功能et,也许是为了你的帮助。

Nico Sjursen.

Ed特区

Bitany Chamberlain.

Ostheer.

良好的工作,谢谢

Trond Andresen.

我是这个功能的作者。它也适用于其他评论者给出的反例。

目的Dulay

Rafael Crepaldi.

Marcos Gonzalez.

ygve.

渐近不适用于此BandStop-Filter中的角度:

>> H = TF([1 0 4000. * 16000],[1 4000 + 16000 4000. * 16000])

传递函数:
s ^ 2 + 6.4e007
---------------------
S ^2 + 20000s + 6.4e007

> > asymp (H)

(也许是因为突发的180度相位频率在带号频率上)

除此之外,这个节目很精彩

罗伯特·斯坦格尔

这并不适用于这个简单的测试:
F11 = -1.2794;
F12 = -7.9856;
F22 = -1.2709;
F = [f11 f12;1 f22];
g = [-f12; 0];
Hx = [1 0];
b22 = inv(-hx * inv(f)* g)
drawtext (F, G*B22, Hx,0), '买进'),coloryellow;
数字
步骤(sys),网格
数字
BODE(SYS),网格
数字
asymp(系统)

Moussab Bennehar

Moussab Bennehar

你是一个Geeeeeeeeeeenius
真的,很棒的m文件
thanx.

罗伯特。

我需要帮助......它一直在19

纳比尔al-hadawy

******* 谢谢 **********
这是功能(渐少数)非常好

约翰·巴布丝

好东西。谢谢!

Joseph Birbiglia.

非常好,但以下传输功能存在错误:

G (s) = (s ^ 2 + 1) / (s * (s ^ 2 + 4))

---------
???使用==>冒号出错
超出了程序允许的最大可变大小。

==> Asymp在147时出错
设置(获取(gcf CurrentAxes), YTick, magmin: ydelta: magmax);
----------------

Trung Duong

它的工作。不错的工作

Trond Andresen.

我是Asymp()的作者。Anton Cervin报告的问题现已修复。请告诉我是否仍然存在问题。

安东Cervin

这似乎不起作用。

>> G =(S + 1)/(S *(S + 10))

传递函数:
S + 1
----------
s ^ 2 + 10 s

>> Asymp(g)
???使用==>轴错误
无效的对象句柄。

==> ASYMP在120时出错
轴(h);

Zain Gurraya

汪东城Doke

类似的提交:

//www.tatmou.com/matlabcentral/fileexchange/loadFile.do?objectId=2664&objectType=file

我希望在顶部有一个更全面的帮助文本。代码有很好的文档记录。有些编码风格可以做得更好(比如while循环)。既然你正在绘制渐近线,也许函数可以返回破断频率和相应的渐近线斜率。它可以具有与BODE相同的行为,即如果没有输出参数,那么它将创建一个绘图,如果有输出,那么它将不创建绘图。

MATLAB版本兼容性
用R2015B创建
与任何版本兼容
平台兼容性
窗户 macOS Linux.
致谢

启发:控制系统-预兆图

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!