博德如何绘制一系列传递函数?

时间:2015-06-25 16:25:53

标签: matlab filtering signal-processing

我有一些与LLC转换器相对应的传递函数。每个都不同,我正在改变一个参数来可视化频率响应的变化。我有这样的事情:

V(1)=Voutput;
V(2)=Voutput2;
V(3)=Voutput3;

然后我使用以下方式绘制它们:

figure(1)
optsV = bodeoptions('cstprefs');
optsV.FreqUnits = 'kHz';
bode(V, optsV)

问题是每个传递函数都在不同的图表中绘制:

enter image description here

如何在单个图表中绘制它们?

2 个答案:

答案 0 :(得分:1)

使用类似

的内容
bode(V(1),'r',V(2),'g',V(3),'b', optsV)

其中V1,V2,V3是您的各种转移功能。

它们将被绘制为3行,红色,绿色,蓝色三种颜色。

编辑,回复评论:如果你在评论中写的很多,你可以创建数字,调用hold on,并在for循环中绘制所有传递函数,如下所示:

first_tf = tf(1,[1,1]);
%your example of many TF.
V = [first_tf,2*first_tf,3*first_tf];
figure
hold on

for j=1:length(tfdata(V))
    bode(V(j))
end

输出如:enter image description here

答案 1 :(得分:1)

您可以使用以下命令并将所有命令放在同一命令中:

bode(V(1),V(2),V(3), optsV)

如果要使用循环自动绘制所有传递函数,可以使用以下代码:

for i = 1:size(V,2)
    bode(V(i), optsV)
    hold on
end

这是一个简短的演示:

V(1)=tf([1 0 0],[1 1]);
V(2)=tf([1 2 0],[1 1]);
V(3)=tf([1 1 0],[1 1]);

figure(1)
optsV = bodeoptions('cstprefs');
optsV.FreqUnits = 'kHz';

bode(V(1),V(2),V(3), optsV)
legend('V1','V2','V3')

desc