如何生成波特图的矩阵?

时间:2016-12-28 18:03:32

标签: python matlab python-2.7 matplotlib matlab-figure

我有多个波特图,并希望以紧凑的方式绘制它们以简化视觉评估。我想到了......像一个nxm矩阵图。但是,我无法在Matlab或Python中找到如何实现这一点。任何帮助我实现这一点的建议都受到高度赞赏。

用于生成两个波特图的一些示例数据。

f1=[1,10,100,1000] Hz
amp1=[12,56,89,100] V
phase1=[0, 90,180,270] deg

f2=[1,20,50,100] Hz
amp2=[16,34,76,90] V
phase2=[10, 45,145,160] deg

2 个答案:

答案 0 :(得分:1)

同一轴上的多个波特图:

bode(sys)
hold on
bode(sys2)

次要情节:

subplot(211);
bode(sys1);
hold on;
subplot(212);
bode(sys2);
hold on;
subplot(211);
bode(sys3);

不确定除了那之外你还在问什么。

答案 1 :(得分:1)

如评论中所述,您可以提供频率响应阵列作为MIMO系统的输入输出响应。让我们伪造一些3x4x100的复数,然后伪造一系列频率,然后画出Bode

A = rand(3,4,1000);
A = A + (rand(3,4,1000)-0.5)*1i;
w = logspace(-2,2,1000);
G = frd(A,w);
bode(G)

您可以从具有幅度和相位角的r*exp(i \theta)的极坐标表示的磁/相位阵列中再次获得复向量。

enter image description here

编辑

f1=[1,10,100,1000];
amp1=[12,56,89,100];
phase1=[0, 90,180,270];

f2=[1,20,50,100];
amp2=[16,34,76,90];
phase2=[10, 45,145,160];

resp1 = amp1.*exp(1i*phase1*pi/180);
resp2 = amp2.*exp(1i*phase2*pi/180);

G = frd(resp1,f1,'FrequencyUnit','Hz');
H = frd(resp2,f2,'FrequencyUnit','Hz');

bode(G,H);

subplot(211);
bode(G);
hold on;
subplot(212);
bode(H);