【问题标题】:How to Bode plot an array of transfer functions?如何波特图绘制传递函数数组?
【发布时间】:2015-09-12 09:08:47
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: matlab filtering signal-processing


    【解决方案1】:

    使用类似的东西

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

    V1,V2,V3 是您的各种传输函数。

    它们将被绘制成 3 条线,红、绿、蓝三种颜色。

    编辑,回复评论:如果你在 cmets 中写的它们非常多,你可以创建图形,调用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
    

    输出如下:

    【讨论】:

    • 但是如果我有 20 到 30 个这样的传递函数,我如何在不逐一键入的情况下绘制它们?我在 for 循环中生成它们。
    【解决方案2】:

    您可以使用以下命令并将它们全部放在同一个命令中:

    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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多