【问题标题】:Analyzing Spectrogram Matlab [duplicate]分析频谱图 Matlab [重复]
【发布时间】:2015-03-31 14:37:56
【问题描述】:

我在 MATLAB 上的实验需要帮助。我正在尝试获取每个时间间隔的歌曲的频率范围。例如,如果一个人唱歌,他从时间 0 到 0.5 秒的频率范围是多少?我曾尝试使用 MATLAB 的频谱图函数,但我不知道如何从返回值中提取我需要的值。

希望你能帮助我(新手)。

非常感谢。感谢您的帮助。

【问题讨论】:

  • 你为什么不显示你得到的输出和你用来得到它的代码——这样会更容易帮助你。
  • 您好,感谢您的回复。我已经输出了一个看起来像这样的频谱图 docs.google.com/file/d/0B0gNKHg8ApCsSFZMdkRSRk9DdWs/edit 如何从该方法返回的矩阵值中执行切片 [s,w,t] = spectrogram(f(:, 2),256,[],1024,fs,'yaxis'); ? “fs”是来自 audioread() 方法的采样率,“f”是数据信号。我似乎无法理解第四个参数 1024(频率)以及它在频谱图中的作用。非常感谢您的帮助!

标签: matlab signal-processing spectrogram


【解决方案1】:

首先,您需要了解频谱图在做什么;它将您的信号分成更短(但固定)的时间长度并对其进行 FFT(因此,它也称为 STFT 表示)。 Matlab 频谱图有许多可供您选择的选项。

现在回答您的问题,要通过查看频谱图数据来计算信号的频率范围,您需要先使用 NFFT、重叠数和采样频率(I假设您在构建频谱图之前解决了这个问题)。在处理高质量语音(以 16kHz 采样,重叠 50% 和 1024 NFFT)时,每个 bin(或频谱图的切片)应该返回大约 32ms。要计算 0 到 500 毫秒的频率,只需取出第一个 ceil(500/32) 箱并写出频率响应;您可能会获得多个频率,因为语音既具有谐波特性又具有传播特性。

至于其余的,在提供任何有用的帮助之前,我需要确切地知道您的设置/您希望实现的目标。

【讨论】:

  • 您好,感谢您的回复。我已经输出了一个看起来像这样的频谱图docs.google.com/file/d/0B0gNKHg8ApCsSFZMdkRSRk9DdWs/edit我如何从这个方法返回的矩阵值中执行切片 [s,w,t] = spectrogram(f(:,2),256,[],1024, fs,'yaxis'); ? “fs”是来自 audioread() 方法的采样率,“f”是数据信号。我似乎无法理解第四个参数 1024(频率)以及它在频谱图中的作用。非常感谢您的帮助!
猜你喜欢
  • 2017-09-08
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2018-06-05
  • 2021-03-17
相关资源
最近更新 更多