matlab 用bode()命令绘制的bode图 如何提取bode图 数据啊?

matlab 用bode()命令绘制的bode图 如何提取bode图 数据啊?有什么命令吗?亲,或者操作步骤也行;就是把里面每条曲线的数据都要提取出来;感谢你的解答。

在matlab 提取bode图数据如下:

1丶我们现在matlab里面编写好自己要绘制图形的代码。

2丶在代码后面加上[mag,phase,w] = bode(sys);

3丶这时候我们在workplace界面就可以看到我们需要的数据了。

这样就解决了在matlab 提取bode图数据的问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16

比较好的方式是你在调用bode函数时不要让它绘图,而是直接返回数据,例如:

[mag,phase,w] = bode(sys);

如果画出图再想从图中提取信息,虽然也能做到,但要繁琐很多,而且在不同MATLAB版本上可能还存在兼容性问题。

追问

您好!按照你的思路,我试了一遍,但是发现 Workspace 里面有变量mag 是double类型数据,有变量phase 是double类型数据,以及变量w 是是double类型数据;那么我想问的是 这个图中共有25个小图,如何用刚才在Workspace 里面得到的变量数据来依次绘图呢?深表感谢!本人菜鸟。

追答

w是频率,mag是幅频特性,phase是相频特性。

 

想用这些数据来绘图,需要注意几个问题:

1、如果要绘制第i个输出对第j个输入的幅频特性曲线,应该用mag(i,j,:)。但直接引用上面的表达式会得到3维数组(尽管其前两维的长度都是1,本质上还是一个向量),需要注意转换。

2、幅频特性的数据mag是普通意义的放大倍数,而Bode图的纵轴用的是分贝值,需要按照20倍log律进行换算。

3、横坐标(频率轴)通常用对数分度,应使用semilogx函数绘图。

 

示例:

如果要画图中第1行第2列的那个图,可以用:

dB=20*log10(mag(1,2,:));
semilogx(w,dB(:))

本回答被提问者采纳
第2个回答  2021-01-11
你好,我想请问您多输入多输出的伯德图怎么输出的?我正好遇到这样的问题
相似回答