matlab计算绘制线之间的差值

时间:2014-05-10 16:13:21

标签: matlab plot integrate delta

我正在制作此图表(缩减版代码):

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

如何在整个比例范围内跨越Δ的区间生成另一​​个第1行和第2行之间的增量图?

我想避免简单地使用阅读增量,因为跳跃'这个meathod产生的图表。

非常感谢任何帮助,

1 个答案:

答案 0 :(得分:0)

我相信你想要做的是在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'表示除差异之外的其他内容,请澄清。