【问题标题】:Matlab spectrogram Hann windowMatlab频谱图汉恩窗
【发布时间】:2013-07-25 11:40:38
【问题描述】:

我的任务
我有一个 .wav 格式的信号,采样频率为 44100Hz。我想得到它的功率谱。我想使用大小为 200ms 且窗口周期为 50Hz 的 Hann 窗口来做 STFT。我强制的频率范围是 0 ~ 22000Hz。

我的问题
我可以用下面的代码得到我想要的吗?

[y, Fs, nbits, opts] = wavread('a.wav');
[S,F,T,P]=spectrogram(y,hanning(8820),7938,[0:100:22000],Fs);

上面代码返回的矩阵P是我想要的,对吗?

更多问题

  1. 窗口大小与其FFT大小有什么关系?我通过他们过去是独立的,但我不确定。谁能提供一个简单的答案或一些参考读物?
  2. 我有一个命令 specgram(x, 512, 8000, hamming(80)); --- 我猜最初的目的是:
    信号采样频率:8000
    窗口 nfft : 1024
    窗口期:10ms
    实际上,我不确定这段代码的初衷,任何人都可以阅读它吗?

【问题讨论】:

    标签: matlab spectrogram


    【解决方案1】:

    我不认为您正常格式化频谱图代码。

    命令如下

     [S,F,T,P] = spectrogram(X,WINDOW,NOVERLAP,NFFT,Fs)
    

    其中X是您的数据,WINDOW是您的汉宁窗口,NOVERLAP将是您的窗口跳转,NFFT是您的FFT大小和Fs是数据的采样率。有了这个,你会想要

     NFFT = 2^nextpow2(Fs*200/1000);
     spectrogram(y,hanning(NFFT),Fs/50,NFFT,Fs);
    

    因此,您的汉语窗口是许多样本是200ms的,这取决于您的采样率。

    这应该是窗口的东西你想要的东西,并给你所需的频谱图,然后你可以使用它。

    如果P是你想要的问题。是的,这将返回功率谱。如果那是你想要的,那当然。

    【讨论】:

      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 2012-04-01
      相关资源
      最近更新 更多