一千萬個為什麽

搜索

在Matlab中找到低於最大值的某個值

我在Matlab中有2個800x1數組,其中包含我的幅度與頻率數據,一個數組包含幅度,另一個包含相應的頻率值。我想找到振幅減小到其最大值一半的頻率。

最好的方法是什麽?我想我的兩個主要問題是:如果“半幅值”值位於兩個數據點之間,我該如何找到它? (例如,如果我正在尋找的值是5,如果它位於兩個數據點(例如4和6)之間,我怎麽能“在我的數據中找到它?”)

如果我找到“半幅值”值,我該如何找到相應的頻率值?

在此先感謝您的幫助!

最佳答案

您可以通過這樣做找到您感興趣的點附近的索引

idx = magnitudes >= (max(magnitude)/2);

然後你可以看到所有相應的頻率,包括峰值

disp(frequencies(idx))

如果您想要查看更少的無關內容,可以為 idx 計算添加更多條件。

但是,您對查找確切頻率的擔憂更難回答。它將在很大程度上取決於信號的性質以及窗口函數的線形。一般來說,你可能最好用幾個點來表征你的峰值,然後做一些曲線擬合。您是否試圖通過任何機會計算諧振濾波器的Q值?

轉載註明原文: 在Matlab中找到低於最大值的某個值