matlab 计算绘制线之间的增量

问题描述 投票:0回答:1

我正在生成此图(简化代码版本):

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 行之间的增量图?

我想避免简单地使用读数增量,因为这种方法会生成“跳跃”图表。

matlab plot numerical-integration delta
1个回答
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;

如果“增量”不是指差异,请澄清。

© www.soinside.com 2019 - 2024. All rights reserved.