Matlab谱图Hann窗

Matlab谱图Hann窗,matlab,spectrogram,Matlab,Spectrogram,我的任务 我有一个.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就是我想要的,对吗? 进一步的问题

我的任务
我有一个.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就是我想要的,对吗?

进一步的问题

  • 窗口大小与其FFT大小之间的关系是什么?我知道他们过去是独立的,但我不确定。任何人都可以提供一个简单的答案或一些参考阅读
  • 我有一个命令specgram(x,512,8000,hamming(80));——我猜最初的目的是:
    信号采样频率:8000
    窗口nfft:1024
    窗口周期:10毫秒
    其实,我不知道这段代码的原意,谁都能读

  • 我认为您没有正确格式化光谱图代码

    命令如下

     [S,F,T,P] = spectrogram(X,WINDOW,NOVERLAP,NFFT,Fs)
    
    其中,
    X
    是数据,
    WINDOW
    是汉宁窗口,
    novelap
    是窗口跳转,
    NFFT
    是FFT大小,
    Fs
    是数据的采样率。有了这个你会想要的

     NFFT = 2^nextpow2(Fs*200/1000);
     spectrogram(y,hanning(NFFT),Fs/50,NFFT,Fs);
    
    所以你的汉宁窗口是200毫秒内有多少样本,这取决于你的采样率

    这应该是你想要的窗口,并给你想要的光谱图,然后你可以使用任何你想要的

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