我想提取能量值最大的帧,然后在这个帧中提取20-40HZ,和80-100HZ的能量值,来送入阈值判断中
时间: 2024-04-09 09:29:21 浏览: 15
如果你想提取能量值最大的帧,并在该帧中进一步提取20-40Hz和80-100Hz的能量值进行阈值判断,你可以按照以下步骤进行:
```python
import numpy as np
import librosa
# 假设已经计算得到了梅尔谱图数据 mel_spec
# 找到能量值最大的帧索引
max_energy_frame = np.argmax(np.max(mel_spec, axis=0))
# 定义频率范围
freq = librosa.mel_frequencies()
low_freq_range = np.where((freq >= 20) & (freq <= 40))[0]
high_freq_range = np.where((freq >= 80) & (freq <= 100))[0]
# 在能量值最大的帧中提取对应范围内的能量值
low_freq_energy = mel_spec[low_freq_range, max_energy_frame]
high_freq_energy = mel_spec[high_freq_range, max_energy_frame]
# 定义阈值
threshold_low = 0.5 # 低频阈值
threshold_high = 0.2 # 高频阈值
# 判断是否归类为异常
is_low_freq_abnormal = low_freq_energy < threshold_low
is_high_freq_abnormal = high_freq_energy < threshold_high
# 判断整体是否归类为异常
is_abnormal = np.logical_or(is_low_freq_abnormal, is_high_freq_abnormal)
# 输出异常判断结果
if is_abnormal:
print("该帧被归类为异常")
else:
print("该帧没有被归类为异常")
```
在这个示例代码中,我们首先找到能量值最大的帧索引 `max_energy_frame`,然后定义了20-40Hz和80-100Hz的频率范围。接下来,我们在能量值最大的帧中提取对应范围内的能量值,并定义了低频阈值 `threshold_low` 和高频阈值 `threshold_high`。然后,我们根据阈值判断这些能量值是否低于阈值,并最终得到整体是否归类为异常的判断结果。
请根据你的具体需求和数据进行适当的调整,例如调整阈值、频率范围等。
希望这个示例能满足你的需求!如果还有其他问题,请随时提问。