【问题标题】:matlab calculating delta between plotted linesmatlab计算绘制线之间的增量
【发布时间】:2014-05-10 16:13:20
【问题描述】:

我正在制作这张图(简化的代码版本):

k = 1000
r = [100 220 470 1*k 2200 4700 10*k 22*k 47*k 100*k 220*k 470*k 1000*k ]

unModNB = [0.72 0.746 0.801 0.92 1.16 1.69 2.78 4.6 6.45 9.1 11.2 12.4 13.2]
unModWB = [1.124 1.17 1.23 1.48 1.84 2.65 4.2 7.6 11.8 15.4 18.6 20.01 21.7]

ModNBdB = 20*log10( ModNB)
ModWBdB = 20*log10( ModWB)

semilogx( r,  ModNBdB, r, ModWBdB )
grid
legend(Line 1 ', 'Line 2')

如何在全刻度的 delta 间隔内生成另一条线 1 和线 2 之间的 delta 图表?

我想避免简单地使用读数增量,因为这个肉类生成的“跳跃”图。

非常感谢您的帮助,

编。

【问题讨论】:

    标签: matlab plot integrate delta


    【解决方案1】:

    我相信您想要做的是在 unModNB 和 unModWB 点之间进行插值,并计算它们之间的差异(如您所说的增量)。为此,您可以使用interp1()。试试这个:

    k = 1000;
    r = [100 220 470 1*k 2200 4700 10*k 22*k 47*k 100*k 220*k 470*k 1000*k ];
    
    unModNB = [0.72 0.746 0.801 0.92 1.16 1.69 2.78 4.6 6.45 9.1 11.2 12.4 13.2];
    unModWB = [1.124 1.17 1.23 1.48 1.84 2.65 4.2 7.6 11.8 15.4 18.6 20.01 21.7];
    
    ModNBdB = 20*log10( unModNB );
    ModWBdB = 20*log10( unModWB );
    
    semilogx( r, ModNBdB, r, ModWBdB )
    grid
    legend('Line 1', 'Line 2')
    
    sampled_x_vals = linspace(r(1),r(end),1000);
    
    unModNB_sampled = interp1(r, unModNB, sampled_x_vals, 'pchip');
    unModWB_sampled = interp1(r, unModWB, sampled_x_vals, 'pchip');
    
    deltas = unModWB_sampled-unModNB_sampled;
    figure, semilogx(sampled_x_vals,deltas), grid;
    

    如果您所说的“deltas”指的是差异以外的东西,请澄清。

    【讨论】:

    • 太棒了,当我回到那个时候我会尝试一下。我所说的 delta 确实是指两条线之间的差异,我希望措辞清楚地表明我希望这样做,而正如你教育我的那样,插值。非常感谢,我会在几个小时内了解您所做的工作并实施它,将回复您的代表!
    • 我已经检查了您的代码并理解了它,但没想到它会产生它所做的事情。我的代码生成的图表在 r = 10^2 处的绘制线之间有大约 4 的差异。您的代码生成的绘图大约从 0.4 开始。到最后,它似乎是正确的。这可能是因为插值形式不正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2017-04-18
    • 2014-11-25
    • 2014-06-21
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多