A是增加固定值(频率)的列表。它没有均匀分步,但价值观永远不会改变。
A = 5,10,17,23,30
A中的每个值都由列表B(体积)中的相应值加权。
B = 2.2,3.5,4.4,3.2,1.1
我想计算最响的频率(A)。问题是最响亮的频率可能是14但我无法从这个数据集中得知。如何根据列表B计算列表A中最响亮的频率?
答案 0 :(得分:1)
以下是解决方案的大致轮廓:我没有为你解决所有的数学问题,但我希望它有所帮助。
使用插值样条近似频率幅度。 这将为您提供每对相邻频率采样点之间的函数,作为该对周围频率值的基函数之和。
这意味着您在每个间隔上定义了函数f(x)。
f(x) = A phi_0(x) + B phi_1(x) + C phi_2(x) + D phi_3(x)
最多
0 = f'(x) = A phi_0'(x) + B phi_1(x) + C phi_2(x) + D phi_3(x)
如果使用三次样条插值,则导数将在x中为二次方。因此,您可以为每个间隔获得2个潜在极值。
扫描所有间隔,计算该极值。检查它是否落在间隔内..如果不是它真的不是潜在的极值。您现在拥有所有潜在内部最大值的列表。将每个节点的值添加到此列表中。此列表中的最大值将是插值样条曲线的最大值。
答案 1 :(得分:1)
你在这里并不是很清楚(恕我直言)。我不知道A中B的“权重”值意味着什么。我们是否假设我们将B视为A的函数?因此,我们正在寻找频率(A)使得B达到其最大值,作为A的函数?
如果是这样,这只是插值的问题,然后最大化插值。根据您可以使用的工具,您可以进行样条插值,如图所示。然后,这只是找到该样条曲线的最大值的问题。
此样条模型表明最大值为Bmax = 4.4132,发生在A = 16.341。
或者,可以通过这些点简单地拟合插值多项式。你的曲线并不是一个4度多项式不适合的嘈杂。 (如果你有更多的观点,高阶多项式将是一个可怕的想法。那么你可以使用分段拉格朗日插值。)在MATLAB中完成,
>> P = polyfit(A,B,4)
P =
6.6992e-05 -0.0044803 0.084249 -0.34529 2.3384
我将绘制多项式本身。
>> ezplot(@(x) polyval(P,x),[5,30])
我们可以通过查找导数函数的根(零值)找到最大值。由于导数是三次多项式,因此有三个根。其中只有一个是有意义的。
>> roots(polyder(P))
ans =
31.489
16.133
2.5365
感兴趣的根是16.133,这与插值样条的预测一致。